کداکسپلور | CodeExplore
7.91K subscribers
1.96K photos
314 videos
103 files
1.74K links
با کد اکسپلور یاد بگیر، لذت ببر و بروز باش ⚡️😉

سایت کد‌اکسپلور:
CodeExplore.ir
👨🏻‍💻 ارتباط با ما :
@CodeExploreSup
گروه :
@CodeExplore_Gap
تبلیغات در کد اکسپلور :
@CodeExploreAds
Download Telegram
1️⃣ آموزش ریجکس (regex) (عبارت های با قاعده) ☺️ - قسمت اول

☹️ بزارید تو قسمت اول یکم با خود regex و تاریخچش آشنا بشیم و اصلا ببینیم چه کاربردی داره و به چه کارمون میاد!

🫀 تاریخچه ریجکس: پیدایش ریجکس در واقع از ریاضیات گرفته شده و ریشه اون در برنامه نویسی به سال 1986 بر میگرده که یه شخصی مثل من و شما توی ویرایشگر متنی QED همچین جستجوی متنی رو پیاده سازی کرد 😀

👻حالا اصلا ریجکس واقعا چیه؟ ریجکس یک زبان یا فریمورک یا یه کتابخونه وابسته به زبان نیست! بلکه یک تکنولوژی و سینتکس ثابته که توی اکثر زبان های برنامه نویسی قابل استفاده است.

👽 کاربرد عمو ریجکس (شایدم عمه!) چیه؟ نمیدونم چقدر با متن ها توی برنامه نویسی سر کار داشتید اما ممکنه زمانی یه متن طولانی داشته باشید و بخواید یه چیزی رو ازش پیدا کنید.
شاید الان بگید توابع آماده برای پیدا کردن کلمه وجود داره! ولی بعضی وقتا ما دنبال یه کلمه ثابت نیستیم! بزارید یه مثال ریز بزنم تا متوجه بشید 🐱

سلام من امیر هستم . شماره من 09112345678 است و همچنین شماره دوستمم 09112345050 است. من دوستمو خیلی دوست دارم ، اسمش ریجکسه!

توی متن بالا ، اگه بخوایم شماره تلفن ها رو در بیاریم باید چیکار کنیم؟ آفرین ، کاربرد ریجکس دقیقا همینجا نمایان میشه !
همونجوری که توی عنوان هم نوشتم، Regex به فارسی میشه عبارت منظم ، یعنی اگه بخواید توی رشته (متن) دنبال بخش های منظم بگردید که از الگوی خاصی پیروی میکنن ، میتونید از regex استفاده کنید 🐱

همچنین کاربرد ریجکس فقط توی پیدا کردن نیست ، یه زمانی ما میخوایم چیزایی که پیدا کردیم رو با یه چیز دیگه جایگزین کنیم ، مثلا تو همین مثال بالا اگه فردی همچین نظری رو توی سایتمون ثبت کرد ما نمیخوایم همینجوری نمایش داده بشه بلکه میخوایم شماره های تلفن با *** جایگزین بشن ، پس بازم ریجکس میتونه بهمون کمک کنه 👁

به صورت کلی هدف عمو ریجکس اینه که به صورت پیشرفته بتونیم داخل متنمون بگردیم و عبارتی که الگو ثابتی داره رو پیدا کنیم 🫠
عبارت منظم یک گروه از کارکترها یا نمادهاست که برای پیدا کردن یک الگوی مشخص در یک متن به کار گرفته می شود.

⬅️ ادامه در پست بعدی
#regex #regular_expression
#regex_1 #regex_start
☕️ @CodeExplore
Please open Telegram to view this post
VIEW IN TELEGRAM
16❤‍🔥7🔥5
😮 خب یه سوالی رو ممکنه بپرسید و بگید آیا regex سخته ؟ منم خیلی ساده میگم هرچیزی سختی خودشو داره ! اما اگه تمرین کنید و خوب یاد بگیرید ریجکس خیلی ساده و منظمه! مثل ریاضی! که شاید بخاطر آموزش نادرست برای خیلیا غول به نظر بیاد و برای خیلیا شیرین و راحت 🤡
من که میگم ریجکس ایزی پیزیه (easy peasy lemon squeezy)


تا یادم نرفته اینم بگم که توی زبان های برنامه نویسی تقریبا استفادش به یک صورته و فقط اسم توابع یا بکارگیریش فرق داره (مثل استفاده JSON در زبان های مختلف میمونه)
چنتا از استفاده هاشم توی زبان های مختلف این زیر میزارم :

$str = "Our Channel is CodeExplore";
$pattern = "/CodeExplore/"; // Regex
echo preg_match_all($pattern, $str);


⌨️ توی زبانی مثل php باید regex خودمون رو بین دوتا / قرار بدیم و با تابع preg_match_all عبارت های خودمون رو پیدا کنیم .

let str = "Our Channel is CodeExplore";
let pattern = "/CodeExplore/" // Regex
console.log(str.search(pattern))
// OR
let arr = [...str.matchAll(/CodeExplore/g)]
console.log(arr)



⌨️ توی جاوا اسکریپت هم مثل php باید بین دوتا / قرار بدیم ولی برای پیدا کردن از تابع search میتونیم استفاده کنیم و برای پارامترش بهش ریجکس پاس بدیم (همچنین روش درستش استفاده از matchAll هست برای پیدا کردن تمامی عبارت ها)

import re
str = "Our Channel is CodeExplore";
pattern = r"CodeExplore" # Regex
x = re.search(pattern, str)
print(x)


⌨️ توی پایتون هم که میبینید استفادش به این صورته و نیازی به / اول و آخرم نداره (کلا پایتون شُل کرده! البته بهتره قبلش یه r بزارید تا متوجه بشه regex)


این پست رو همینجا به پایان میرسونم تا خسته نشید، در پست بعدی با خود ریجکس آشنا میشیم و دیپ تر میشیم 🍸

😀همچنین زیر همین پست کامنت بزارید که برای آموزش دوست دارید روی چه زبانی برنامه نویسی تست انجام بشه (با اینکه خیلی از موارد آموزش هیچ ربطی به زبان استفاده شده نداره)

روز خوبی داشته باشید 🔋

#regex #regular_expression
#regex_1 #regex_start
☕️ @CodeExplore
Please open Telegram to view this post
VIEW IN TELEGRAM
14🔥7❤‍🔥5
2️⃣ آموزش ریجکس (regex) (عبارت های با قاعده) ☺️ - قسمت دوم

در پست قبلی باهم در مورد تاریخچه و کاربرد ریجکس صحبت کردیم ، امروز قراره به طور رسمی وارد آموزش ریجکس بشیم و یخورده عمیق تر بررسی کنیم ⭐️

قبل از شروع آموزش اصلی باید بهتون بگم تو این آموزش اول ریجکس رو مینویسم و زیرش خروجی که به ما میده. همچنین میخوام بهتون دوتا سایت معرفی کنم که برای تمرین در مورد ریجکس خیلی عالیه
و بهتره بعد از آموزش هر روز خودتونم برید و تست کنید :
my choice 👽
2️⃣ Two

🚫 حرف اضافی بسه و بریم سر آموزش خودمون 🦦
فرض کنید متنی مثل زیر داریم :

You can see the names of all my friends here: Amin, AmirMassoud, AmirAli, Amir, Saeed, Korosh, Agha Reza, amiran


⚫️ اولین چیزی که توی ریجکس قراره یاد بگیریم پیدا کردن یه الگو فوق العاده ثابته!
یعنی من توی جمله بالا میخوام فقط کلمه Amir رو استخراج کنم ، برای این کار سینتکس ریجکس میشه این :

/Amir/

Amir


توجه کنید که / اول و آخر خونده نمیشن و سینتکس اصلی خود ریجکسه (PCRE) و هرچیزی بین دوتا / باشه الگو شماست و هرچیزی بعد از / آخر باشه flag شماست که الان توضیح میدم چیه 🤝

با توجه به ریجکسی که الان نوشتیم ، انتظار داریم که از متن بالا تمامی Amir هارو استخراج کنه، اما به دوتا مشکل میخوریم !
اول اینکه اگه بدون flag از این ریجکس استفاده کنیم فقط اولین الگو رو برای ما برمگیردونه ! پس اول بیاید کاری کنیم که همه رو پیدا کنه :

/Amir/g

Amir, Amir, Amir


حالا اگر دقت کنید یدونه g به آخر ریجکسمون اضافه کردیم ، g مخفف کلمه global و یعنی تمامی موارد پیدا شده رو برای من برگردونه 👨‍💻
ولی بازم یه مشکلی داریم! ریجکس به حروف بزرگ و کوچیک حساسه پس کلمه amir داخل amiran رو برای ما پیدا نمیکنه 💔
برای حل این مشکلم باید یه flag دیگه اضافه کنیم به اسم i که مخفف insensitive که یعنی روی حروف بزرگ و کوچیک حساس نباش 👽
پس ریجکس اصلی ما برای پیدا کردن تمامی amir ها میشه این :

/Amir/gi

Amir, Amir, Amir, amir


⌨️ خب تا الان دوتا flag مهم رو یاد گرفتید بیاید همین مثال رو توی زبان js تست کنیم :

let text = '.....'  // همون متن بالا
let pattern = /amir/gi
let find = [...str.matchAll(pattern)]
console.log(find)
//Print: (4) [Array(1), Array(1), Array(1), Array...]


بیاید از این دوتا فلگ خارج بشیم و یه نماد دیگه داخل ریجکس یاد بگیرم. اول بزارید متن رو یه تغییری بدم :

my name amirmohammad and my friends:
amirali
amirreza
amiran
agha reza
koroshe
samir


خب چرا مثالو اینجوری تغییر دادم؟ چون میخوام یه نماد و فلگ بهتون یادم بدم 😏
قبل از اینکه ریجکس بنویسیم بزارید بگم که اصلا توی متن بالا دنبال چی هستیم؟ اگه توجه کنید خط اول یه توضیح داره و بقیه خط ها یک اسمه؛ ما میخوایم Amir هایی رو پیدا کنیم که فقط کلمه amir ، اول جمله است 💓
برای اینکه بخوایم مشخص کنیم amir حتما اول جمله باشه باید از نماد ^ (بهش میگن هَت) استفاده کنیم (نماد ^ ،همجا اول خط رو مشخص نمیکنه و در آموزش های بعدی میفهمید که در جای دیگه هم کاربرد داره) :

/^Amir/gi

Empty


اگه ریجکس بالا رو تست کنیم بازم به مشکل میخوریم
یعنی هیچ تطابقی بهمون نمیده ؛ چرا ؟ چون که زیرا 🤡
دلیل اینکه به ما هیچ تطابقی نمیده اینه که ریجکس به صورت پیشفرض مولتی لاین نیست (یعنی اگر از ^ استفاده کنید فقط خط اول رو به عنوان اول خط میشناسه و بقیه خط هارو حساب نمیکنه 🪫 و چون خط اولمونم با amir شروع نمیشه ، پس تطابقی برنمیگردونه)
حالا برای اینکه این قابلیت رو هم روشن کنیم 🔵 باید از flag جدیدی به اسم m استفاده کنیم که مخفف multi Line :

/Amir/gim

amir, amir, amir


حالا با ریجکس بالا همه اسم هایی که فقط با amir شروع میشن و اول خط هستن رو به دست آوردیم ❤️


برای امروز بسه 🥲
با ما همراه باشید تا آموزش بعدی 🥲

#regex #regular_expression
#regex_2
☕️ @CodeExplore
Please open Telegram to view this post
VIEW IN TELEGRAM
17❤‍🔥6🔥5
3️⃣ آموزش ریجکس (regex) (عبارت های با قاعده) ☺️ - قسمت سوم

📢 در پست قبلی با flag های m, i, g آشنا شدیم و همچنین نماد هَت (^) رو یاد گرفتیم که برای مشخص کردن اول خط به کار میره

بریم یه نماد دیگه رو هم یاد بگیرم و اون هم نماد $ (دلار ساین) است که دقیقا برعکس ^ برای آخر جمله استفاده میشه 💘
بریم یه متن بنویسیم و روش یه تست پیاده کنیم:

JavaScript
PostScript
shelllll
ActionScript
PowerShell
AppleScript
Script
Network
hello1
PHP


خب توی متن بالا میخوایم تمامی عبارت هایی رو پیدا کنیم که به Script ختم بشن:

/Script$/img

Script, Script, Script, Script, Script


با دستور بالا 5 تا تطابق داریم ، اما اینجا به یه موضوعی پی میبریم 🗽
اونم اینکه تا فعلا با ریجکس فقط یه اسم ثابت رو جستجو کردیم که با find ساده توی یک زبان برنامه نویسی پیدا میشد ، پس چرا از ریجکس استفاده کردیم؟ اینجاست که باید بگم یه زمانی ما دنبال یه کلمه ثابت هستیم و میخوایم ایندکس اون کلمه رو توی متن پیدا کنیم و ممکنه اون کلمه چنبار در جمله اومده باشه ، برای همین با ریجکس میتونیم ایندکس رو بدست بیارم (و اینکه میخواید با ایندکسش چیکار کنید به خودتون مربوطه ، مثلا اگر بخواید از ایندکس 20 تا ایندکس 40 متن رو فقط replace کنید از این روش استفاده میکنید ، البته ممکنه همین کارو بتونید با چنتا تابع متفاوت هندل کنید) 👨‍💻
⌨️ توی جاوا اسکریپت این مثال رو میبینیم:

let str = ... //همون مثال بالا;
let pattern = /Script$/gm
let arr = [...str.matchAll(pattern)]
console.log(arr);
//(5) [Array(1), Array(1), Array(1), Array...]
// اگه یکی از آرایه هارو باز کنیم همچین چیزی میبینم:
// ["Script", 4, "JavaScript\nPostScrip...]
// که اولین ایندکس، کلمه پیدا شده ، دومین ایندکس ، ایندکس کلمه داخل متن و سومین ایندکس خود متنه


🔞 اینم بدونید که میشه از همه نماد ها باهم توی ریجکس استفاده کرد ، مثلا ریجکس زیر رو در نظر بگیرد:

/^hello$/igm


ریجکس بالا فقط عبارت هایی رو پیدا میکنه که اول جمله با hello شروع بشه و با hello هم تموم بشه 😐

حالا برسیم سر یه موضوع دیگه ، و یکمی جدی تر وارد دنیای قشنگ و قدرتمند ریجکس بشیم 🎇

مثال اول رو یادتونه که دنبال عبارت هایی میگشتیم که به Script ختم بشن؟ اونجا فهمیدیم که فقط خود Script رو برای ما برمگیردونه ، ولی اگه ما بخوایم کلماتی رو پیدا کنیم که به Script ختم میشه (مثل خود کلمه AppleScript) باید چیکار کنیم؟ 🤔
قبل از اینکه مثال بالا رو حل کنیم نیازه که چنتا چیز دیگه رو تو ریجکس یاد بگیرید 🐱
من مثال اول رو تغییر نمیدم و با همون پیش میریم 🐱

/shel/gmi

shel, shel



ریجکس بالا که خیلی ساده میاد و کلمه shell رو پیدا میکنه و اصلا هم کاری نداره کجای متنه ، کوچیکو بزرگم براش فرقی نداره😏

برای اینکه به محدودیت تلگرام نخوریم 🤮 ادامه آموزش رو تو پست بعدی ادامه میدیم 🤗


#regex #regular_expression
#regex_3
☕️ @CodeExplore
Please open Telegram to view this post
VIEW IN TELEGRAM
❤‍🔥153🔥2
⬆️ ادامه آموزش رو با یه چیز مهم شروع میکنم، اول بزارید متن نمونه رو یکبار دیگه بنوسیم:

JavaScript
PostScript
shelllll
ActionScript
PowerShell
AppleScript
Script
Network
hello1
PHP


🥺 ریجکس زیر رو در نظر بگیرید :

/shel{2}/gmi

shell, shell


اینجا یه نماد جدید میبیند: {2} ، که خیلی مهمه
هر عددی که بین آکولاد بزارید ، تعداد رو مشخص میکنه ، یعنی توی ریجکس بالا دارید میگید دنبال عبارتی باش که اولش she داشته باشه و حرف l دقیقا دوبار تکرار بشه ، و چون توی متن اصلی PowerShell و shelllll دوتا ll پشت هم دارن ، پس این تطابق رو پیدا میکنه و دوتا shell برمیگردونه.

❗️ توجه داشته باشید به ریجکس زیر:

/ab{2}c/img


ریجکس بالا دنبال عبارت هایی میگرده که اولشون a ، آخرشون c و بینشون دقیقا 2 تا b باشه!

/shel*/img

shell, shelllll


😌 نماد * یعنی 0 تا n تعداد ، حالا یعنی چی؟ یعنی ریجکس بالا دنبال عبارتی میگرده که اولش she باشه و l در اون 0 یا اِن بار تکرار شده باشه ، پس از اینجاست که عبارتی که ما دنبالش میگردیم از حالت ثابت خارج میشه (چون ایندفعه خودمونم نمیدونیم l چنبار تکرار میشه )
پس با این وجود ریجکس بالا از متن ما دوتا کلمه shell و shelllll رو پیدا میکنه (دیگه چیزیو پیدا نکرد که مشابه هم باشه 😎) ، کم کم داره جالب میشه 😠

❗️ توجه داشته باشید به ریجکس زیر:

/ab*c/img


ریجکس بالا دنبال عبارت هایی میگرده که اولشون a ، آخرشون c و بینشون کارکتر b به تعداد 0 یا اِن بار باشه !

⛔️ بیشتر از این توضیح نمیدم و ازتون میخوام تا پست بعدی خودتون یکمی سرچ کنید و ببینید میتونید کلماتی رو پیدا کنید که به Script ختم میشن یا نه (24 ساعت فرصت دارید و جدی برید دنبالش وگرنه هوش مصنوعی تو یه خط میتونه بگه)

منم توی پست فردا ادامه میدم 🤝
روز خوبی داشته باشید 🔋

بهتون تمرین میگم که توی کامنت برام جوابشو بنویسید (با هوش خودتون و چیزایی که از اینجا یاد گرفتید (کسایی که از قبل بلدن لطفا پاسخگو نباشن 🫠))

⚫️ متن زیر رو در نظر بگیرید و برام ریجکسی رو بنویسید که بتونه همه کلمات داخل متن رو استخراج کنه :
br ber beer



#regex #regular_expression
#regex_3
☕️ @CodeExplore
Please open Telegram to view this post
VIEW IN TELEGRAM
12❤‍🔥4🔥3
4️⃣ آموزش ریجکس (regex) (عبارت های با قاعده) ☺️ - قسمت چهارم

خب توی آموزش قبلی در مورد نماد {} و * صحبت کردیم ، امروز قراره مسئله آموزش قبل رو حل کنیم و چنتا چیز جدید یاد بگیریم 🦦

بزارید مثال قبلی رو اینجا هم بزارم:
JavaScript
PostScript
shelllll
ActionScript
PowerShell
AppleScript
Script
Network
hello1
PHP


قبل از هرچیزی میخوام بهتون در مورد دسته های کارکتری بگم (دسته های کارکتر همون کارکتر های کنترلی در زبان های برنامه نویسی هستند مثل n\)
صد در صد با n\ آشنا هستید و میدونید که این کارکتر خط جدید ایجاد میکنه و کار Enter رو انجام میده 💡
توی ریجکس هم همچین کارکتر هایی داریم که کار مشخصی رو انجام میدن (مثلا همین n\ رو داریم که خط جدید مشخص میکنه)

ولی بحث امروز ما در مورد دسته کارکتر w\ (مخفف Word)، این دسته کارکتر یعنی همه حروف انگلیسی ، همه اعداد و علامت _ ، شاید الان کامل متوجه نشید که این علامت چیکار میکنه ، پس مثال میزنم:

/\w/img

J, a, v, a, S, c, r, i, p, t, P, o, s, t, S, c, r, i, p, t, s, h, e, l, l, l, l, l, A, c, t, i, o, n, S, c, r, i, p, t, P, o, w, e, r, S ,h, e, l, l, A, p, p, l, e, S, c, r, i, p, t, S, c ,r, i, p, t, N, e, t, w, o, r, k, h, e, l, l, o, 1, P, H, P


🔔 ریجکس بالا میاد تمامی حروف و اعداد رو از مثال ما پیدا میکنه ، یعنی از اول جمله شروع میکنه به J برخورد میکنه و همین رو برمگیردونه! و چون از flag های g و m استفاده کردیم میره برای تطابق های بعدی.
یعنی بعد از J به a برخورد میکنه و a رو هم برمیگردونه و همینجوری الی آخر ادامه میده (پس در مثال بالا تمامی حروف و اعداد رو برمیگردونه)

/\w{2}/img

Ja, va, Sc, ri, pt, Po, st, Sc, ri, pt, sh, el, ll, ll, Ac, ti, on, Sc, ri, pt, Po, we, rS ,he, ll, Ap, pl, eS, cr, ip, Sc, ri, pt, Ne, tw, or, he, ll, o1, PH


🚫 حالا از آکولاد استفاده کردم تا براش تعداد مشخص کنم ، ایندفعه بجای اینکه دونه دونه حروف رو برگردونه ، دوتا دوتا این کار رو میکنه (یعنی اول میاد به J برخورد میکنه و چون بهش گفتیم حتما 2 تا باشه حروف بعدیشم اگه حرف یا اعداد و یا _ بود رو قبول میکنه و برمیگردونه ، توجه کنید که حتما باید بتونه دوتا حروف پشت هم پیدا کنه و اینتر رو قبول نمیکنه) 👽

/\w*/img

JavaScript, PostScript, shelllll, ActionScript, PoserShell, AppleScript, Script, Network, hello1, PHP


🌎 علامت * هم که قبلا یاد گرفته بودید ، پس توی ریجکس بالا دنباله اعداد رو تا جایی ادامه میده که به یه چیزی غیر از اعداد ، حروف و آندرلاین برخورد کنه

/\w+/img

JavaScript, PostScript, shelllll, ActionScript, PoserShell, AppleScript, Script, Network, hello1, PHP


نماد + هم دقیقا مثل * کار میکنه ، با این تفاوت که دیگه 0 تا n تعداد نیست! و میشه 1 تا n تعداد 🪐
البته توی مثال بالا خروجی * و + یکیه (چون به صورت تنها داره استفاده میشه)

حالا که این علامت هارو یاد گرفتیم ، بیاید توی مثالمون کلماتی رو جدا کنیم که آخرشون به Script ختم بشه:

/\w*Script/img

JavaScript, PostScript, ActionScript, AppleScript, Script


ریجکس بالا میاد دنبال عبارت هایی میگرده که اولشون 0 تا n تعداد حروف یا عدد (یا آندلاین) باشه و به اون ها Script چسبیده باشه.
به نظرتون ریجکس بالا مشکلی نداره ؟ 💀

در واقع اینجاست که فرق بین * و + فاحش میشه ، اگه جای * بالا از + استفاده کنیم دقیقا عبارت هایی رو برامون پیدا میکنه که اولشون یه حرفی وجود داشته باشه و به اون حرف Script چسبیده باشه ، ولی اگه از * استفاده کنیم Script خالی رو هم مطابقت میده که ما اینو نمیخایم 👨‍💻:

/\w+Script/img

JavaScript, PostScript, ActionScript, AppleScript


❗️ توجه داشته باشید به ریجکس زیر:

/a\w+c/img


ریجکس بالا دنبال عبارت هایی میگرده که اولشون a ، آخرشون c و بینشون اعداد، حروف و یا آندرلاین به تعداد 1 یا n بار باشه !

آموزش امروزمونم تموم شد ، امیدوارم خوشت اومده باشه
روز خوبی داشته باشید 🔋

شما هم تو کامنت ریجکسی بنویسید که بتونه عبارت هایی رو پیدا کنه که اولشون هرچیزی میتونه داشته باشه ولی آخرش با یدونه z تموم بشه !

#regex #regular_expression
#regex_4
☕️ @CodeExplore
Please open Telegram to view this post
VIEW IN TELEGRAM
16❤‍🔥6🔥3😁1
5️⃣ آموزش ریجکس (regex) (عبارت های با قاعده) ☺️ - قسمت پنجم

⬅️ بریم برای مفاهیم جدید و یکمی تمرین

متن زیر رو در نظر داشته باشید:

readme.md
document.pdf
image.png
music.mp4
manual.pdf


اگه بخوایم اسم تمامی فایل های pdf رو در بیارم باید چیکار کنیم؟ میدونیم که با استفاده از w/ میتونیم تمامی حروف و اعداد رو استخراج کنیم ، پس میدونیم داخل ریجکسمون w/ رو داریم! اما باید خدمتتون عرض کنم که برای مشخص کردن نقطه (.) نمیتونیم از خود نقطه استفاده کنیم 🥲
چرا ؟ چون علامت نقطه (.) توی ریجکس به معنای همه کارکترهاست (یعنی تمامی حروف، اعداد، علامت ها و کلا هرچیزی که بنویسید) برای اینکه از خود نقطه بتونیم استفاده کنیم باید از .\ استفاده کنیم که یه کارکتر کنترلیه دیگه داخل ریجکسه 👹
پس ریجکسمون میشه این:

/\w+\.pdf/img

document.pdf, manual.pdf


🧐 یادتونه توی پست اول گفته بودم میخوایم شماره تلفن هارو از تو یه متن در بیارم ؟ بیاید اون کارو انجام بدیم و یه تمرینی هم برای خودتون بشه!
متن زیر رو در نظر بگیرید :

numbers: 09112345656 09126787 0912567622
09118174522 676232323
12345678998


💫 بیاید با هم ریجکسشو بنوسیم! قبل از نوشتن باید الگو شماره تلفن رو بدونیم ، و میدونیم شماره همراه داخل ایران کلا 11 رقمه و با 09 شروع میشه ، ریجکس زیر رو با دانشی که تا الان داریم مینویسم:

/09\w{9}/img

09112345656, 09118174522


⬆️ توی مثال بالا گفتیم با 09 شروع بشه و بعدش دقیقا 9 تا حرف یا عدد قرار بگیره، به صورت فنی توی مثال بالا این شکل ریجکس کارسازه! اما میدونید که w\ همه حروفو اعداد رو قبول میکنه ، پس اگه توی مثال بالا عبارت 09abcdefgoi وجود داشت ، این رو هم قبول میکرد (که اصلا شماره نیست😵‍💫)
برای حل این مشکل با یه دسته کارکتر دیگه به نام d\ آشنا میشیم (مخفف digit) که فقط اعداد رو قبول میکنه (یعنی فقط 0 تا 9) ، حالا با استفاده از این دسته کارکتر میتونید مطمئن باشید که دیگه 09abcdefgoi رو قبول نمیکنه 🤤

/09\d{9}/img


بیاید متنمو تغییر بدیم به یه چیز ساده :
aim amm aom arm azm


ما میخوایم توی متن ، دنبال عبارت هایی بگردیم که اولشون a داشته باشه ، آخرشون m داشته باشه و بین a و m حرف z باشه و یا o.
برای نوشتن ریجکس این مثال باید عملگر دیگه ایی رو هم مورد بررسی قرار بدیم و اون عملگر [] عه 🤑
ما با استفاده از عملگر براکت میتونیم یه بخش مجزا ایجاد کنیم (مجموعه کارکتر - Character Set)، برای درک بهتر ریجکس متن بالا رو مینوسیم:
/a[zo]m/g

aom, azm


👻 با توجه به ریجکس بالا ، حروفی که داخل براکت قرار میگیرن با همدیگه مورد بررسی قرار میگیرن ، و در مثال بالا وقتی پشت سر هم قرار گرفته باشن یعنی فقط یکی از اون ها توی عبارت وجود داشته باشه ، که به زبان فارسی میشه (حداقل یکی از کارکترها) (z یا o) ، همچنین ریجکس بالا رو میشه به صورت زیر هم نوشت:
(❗️ براکت اعداد رو هم قبول میکنه، مثلا [14] یعنی یا عدد 1 باشه و یا عدد 4 (با عدد 14 اشتباه نگرید، ریجکس اعداد رو کلا تک رقمی میبینه) )

/a(z|o)m/g

aom, azm


پرانتز در ریجکس به معنیه گروپ بندیه که در آموزش های بعدی مفصل تر در موردش صحبت میکنیم (ولی فعلا فرض کنید دقیقا مثل براکت عمل میکنه)، و علامت | (پایپ) هم معنیه "یا" رو میده (که احتمالا در برنامه نویسی ازش خبر دارید)

آموزش امروزمونم تموم شد 😋
بهتون تمرین میگم که توی کامنت برام جوابشو بنویسید (با هوش خودتون و چیزایی که از اینجا یاد گرفتید (کسایی که از قبل بلدن لطفا پاسخگو نباشن 🫠))

⚫️ متن زیر رو در نظر بگیرید و برام ریجکسی رو بنویسید که بتونه همه کلمات داخل متن رو استخراج کنه :

beer deer feer


#regex #regular_expression
#regex_5
☕️ @CodeExplore
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17❤‍🔥22
6️⃣ آموزش ریجکس (regex) (عبارت های با قاعده) ☺️ - قسمت ششم

⬅️ خب تا حالا موارد زیادی رو بررسی کردیم ، و اگه یادتون باشه توی پست قبلی یه جایی اشاره کردم به نماد نقطه (.) و گفتم معنیه همه کارکتر هارو میده! برای اینکه اینم بفهمیم چیه ، بزارید یه مثال باز این اول بزارم و با اون بریم جلو:

python 
python%%10
python 3.12
pycharm
py file
sl file


من میخوام ریجکسی رو بنویسم که اولش py داشته باشه و در ادامه میتونه هرچیزی داشته باشه (هم فضای خالی، هم نماد، هم هرچیز دیگه ایی)
من یه ریجکس ساده مینویسم با استفاده از w\ ، که فرقشو با نقطه ببینید:

/py\w*/img

python, python, python, pycharm, py


💡 اگه دقت کرده باشید ، w\ فقط حروف انگلیسی رو قبول میکنه و فضای خالی رو حساب نمیکنه؛ برای اینکه بتونم ریجکس درست تری بنویسم از نماد نقطه (.) استفاده میکنم که یعنی همه چیز (به جز کارکتر new line)!

/py.*/img

python , python%%10, python 3.12, py file


⛔️ بزارید متنمونو یه تغییری بدم:

a, an, and, on, android


😔 خب، من میخوام ریجکسی رو بنویسم که اولش کارکتر a داشته باشه و بعد از اون ، کارکتر n میتونه وجود داشته باشه یا خیر (یعنی وجود داشتن کارکتر n اختیاریه!)
برای اینکه مشخص کنیم یه کارکتر اختیاریه (وجود داره یا نه) از نماد ? استفاده میکنیم:

/an?\w*/g

a, an, and, android


👻 میبینید که کارکتر تنهای a رو هم قبول کرد، چون بهش گفتیم n میتونه باشه ، میتونه نباشه 🤩

بزارید بازم متنو تغییر بدم (نزاریدم خودم تغییر میدم😔):

amirroox(Dani) Score: 1000
amin Score: 0
amirMasood Score: 999
korosh Score: 90
Agha Reza Score: 55
flani Score: 6


ما میخوایم ریجکسی رو بنویسیم که اسم افراد به همراه امتیازشون رو برای ما برگردونه ، البته یه شرط داریم ، و اونم اینه که ، اونایی رو برگردونه که امتیاز 2 ، 3 و 4 رقمی دارن (امتیاز تک رقمی نمیخوایم😔)

🚫 قبل از اینکه ریجکس رو بنویسیم ، همیشه بهتره دقیقا مشخص کنیم دنبال چی هستیم! یعنی الان با مشاهده متن ، میتونیم بفهمیم ممکنه اسم ها بینشون فاصله باشه! همچنین میتونیم بفهمیم متن Score تو همه خط ها هست!
حالا با این تفاسیر بریم ریجکسو بنویسیم:

/.* Score: \d{2,4}/img

amirroox(Dani) Score: 1000, amirMasood Score: 999, korosh Score: 90, Agha Reza Score: 55


⛔️ حتما به فضای خالی که توی ریجکس گذاشتم توجه کنید (دقیقا معنی فضای خالی رو میده)

توی ریجکس بالا {2,4} رو میبینید ، قبلا در مورد حالت {n} صحبت کرده بودیم که معنیه تعداد رو میداد ، حالا وقتی کاما میزاریم ، یعنی یه رنج مشخص میکنیم! یعنی تعداد ما 2 تا 4 باشه
همچنین توجه داشته باشید که داخل آکولاد هیچ فضای خالی نباید وجود داشته باشه 💡

همچنین اگه داخل آکولاد به این صورت بنویسید: {,2} یعنی تعداد کارکتر شما حداقل 2 تا و حداکثری نداشته باشه!

⚡️ توی پست قبلی در مورد براکت صحبت کردیم، بیاید یه مروری روش انجام بدیم و یه چیز جدید یاد بگیریم ، اول بزارید باز این متنو تغییر بدم:

aab, abb, acb, adb, aeb, agb, akb, alb


📱 ما میخوایم ریجکسی رو بنویسیم که کلماتی رو انتخاب کنه که اولشون a داشته باشه ، آخرشون b و بینشون کارکتر های a,b,c,d باشه. قبلا یاد گرفتید چجوری این کارو کنید، منم دوتا مدل قبلی که یاد گرفتید رو مینویسم:

/a[abcd]b/g

/a(a|b|c|d)b/g

aab , abb, acb, adb


خب ، چه چیز جدیدی یاد گرفتیم؟ هنوز هیچی 😬
اگه توجه کرده باشید a,b,c,d توی حروف الفبا ، پشت هم قرار گرفتن ، ریجکس هم برای هندل کردن همچین چیزایی بهتون کمک میکنه!
بجای نوشتن ریجکس بالا، میتونید از ریجکس پایین کمک بگیرید:

/a[a-d]b/g

aab , abb, acb, adb


🎓 وقتی از [a-d] استفاده میکنید، به ریجکس میفهمونید که اینجا میتونه حروف بین a تا d قرار بگیره (خود a و d هم قبوله!)

🙂 اینم یادآوری کنم که علاوه بر حروف الفبا میتونید ، رنج اعداد رو هم مشخص کنید ، مثل زیر:

/a[1-5]b/g


ریجکس بالا ، کلماتی رو انتخاب میکنه که اولشون a ، آخرشون b و بینشون اعداد 1 تا 5 باشه (مثلا اینارو قبول میکنه: a2b, a4b و اینارو قبول نمیکنه: a7b, a9b)

آموزش امروزمونم تموم شد 😋
روز خوبی داشته باشید 😂

#regex #regular_expression
#regex_6
☕️ @CodeExplore
Please open Telegram to view this post
VIEW IN TELEGRAM
16❤‍🔥3🔥2
7️⃣ آموزش ریجکس (regex) (عبارت های با قاعده) ☺️ - قسمت هفتم

⬅️ با سلامی دوباره به رو ماهتون، قراره امروز یه مبحث خیلی مهم رو توی ریجکس یاد بگیریم ، و اونم چیزی نیست جز گروه بندی و capture

قبلا در مورد براکت صحبت کردیم و گفتیم که پرانتز رو فعلا مشابه بدونید؛ اما امروز قراره این مبحث رو باز ترش کنیم.


⚫️ اول مثل همیشه من یه متن ساده مینویسم :
amir 2002
ali 2000
daniyal 2002
hamid 2012
sobhan 1980


قبل از اینکه بخوام توضیح گروه بندی رو بدم ، بزارید یه ریجکس بنویسم:

/[a-zA-Z]* \d{4}/gm

amir 2002, ali 2000, daniyal 2002, hamid 2012, sobhan 1980


اگه تا حالا با آموزش پیش رفته باشید ، ریجکس بالا رو ساده میتونید بفهمید ؛ کل ریجکس بالا میگه عباراتی رو پیدا کن که ، اولشون کارکتر a تا z (هم بزرگ و هم کوچیک) و در ادامه یک فاصله و یک عدد 4 رقمی وجود داشته باشه.

❗️ این نکته رو هم بگم که ممکنه [a-zA-Z] یکم براتون عجیب به نظر بیاد. ولی خیلی ساده است؛ قبلا با [a-z] آشنا شده بودید ، که یعنی هر کارکتری بین a تا z کوچیک. حالا ما بعدش یه رنج دیگه هم میتونیم مشخص کنیم (حتی میتونیم اعداد مشخص کنیم!)
❗️ با نماد w\ آشنا هستید ، این نماد دقیقا برابر میشه با :
[a-zA-Z0-9_]
یعنی شما با براکت خیلی راحت میتونید ، رنج های محتلفی ایجاد کنید :)


⛔️ حالا از بحث اصلی خارج نشیم! با ریجکس بالا ما تونستیم اسم به همراه عدد رو دریافت کنیم. اما یه زمانی ما دقیقا همچین حالتی داریم ولی با داده های خیلی زیاد، و میخوایم اسم و اعداد رو از هم جدا کنیم! (روش برای این کار زیاده، روش اول میتونه هندل کردن با زبان برنامه نویسی باشه، روش دوم میتونه نوشتن دوتا ریجکس باشه و روش سوم استفاده از گروه بندیه)

وقتی از گروه بندی استفاده میکنیم، یعنی ریجکس خودمون رو به بخش ها واحد دسته بندی کردیم (مثلا توی مثال بالا ، اول اسمه، دوم یه عدد 4 رقمی که سال تولده. ما میتونیم توی ریجکس گروه اول رو به اسم اختصاص بدیم و گروه دوم رو به سن و در دریافت مقادیر یه دسته بندی برای خودمون داشته باشیم)

🚫 بیاید ریجکس بالا رو به صورت گروه بندی شده بنویسیم:

([a-zA-Z]*) (\d{4})

amir 2002, ali 2000, daniyal 2002, hamid 2012, sobhan 1980


⚫️ الان من فقط 4 تا پرانتز اضافه کردم، ولی با همین تغییر به ریجکس فهموندم، قسمت اول ، گروه اولمه، و قسمت دوم گروه دومه.
برای اینکه بفهمیم این اصلا کجا کاربرد داره ، من توی جاوا اسکریپت یه اسکریپت ساده مینویسم.

let text = '.....' // همون متن بالا
let regex = /([a-zA-Z]*) (\d{4})/gmi;
let matchAll = text.match(regex)

let names = [];
let born = [];
matchAll.forEach(() => {
let match = regex.exec(matchAll);
names.push(match[1]);
born.push(match[2])
})

console.log(names, born)


⬆️ به شکل بالا ، میتونیم اسم ها و اعداد رو جدا کنیم (این یه مثال ساده است که با روش های زیادی هندل میشه، اما در متن های پیشرفته تر این روش خیلی کاربردی تره)

😔 حالا بزارید من متن رو یه تغییری بدم ، و یکی دیگه از کاربرد های گروه بندی رو هم یاد بگیریم:

ha-ha
man-man
check-chick
no-yes
one-two
beb-beb


فرض کنید ، ما میخوایم از متن بالا ، عباراتی رو انتخاب کنیم که بینشون دَش (-) باشه و دو طرف دَش شبیه به هم باشن. 🫠

اینجا از گروه بندی و ارجاع به گروه استفاده میکنیم (ارجاع ، یعنی اشاره کردن) 😔

ریجکس زیر رو ببنید:
/(\w+)-\1/img

ha-ha, man-man, beb-beb


🥸 شاید الان بگید ، 1\ یعنی چی ؟ هر عددی بعد از بک اسلش قرار بگیره ، اشاره به گروه میکنه! الان توی ریجکس بالا ، فقط یدونه گروه داریم، پس 1\ یعنی اشاره کردن به گروه اول.
خیلی بخوام واضح ریجکس بالا رو توضیح بدم میشه این : عباراتی را پیدا کن که ، اولشون به تعداد 1 الی اِن تا حروف داشته باشه و در ادامه یک دَش قرار بگیره و در آخر همان گروهی که پیدا شده در ادامه دَش وجود داشته باشه.

😔 توجه کنید که وقتی از 1\ استفاده میکنیم ، دقیقا همون الگو داخل گروه رو جایگزاری کردیم و فقط ریجکسمونو کوتاه ترش کردیم 😬
برای مثال ، ریجکس بالا بدون گروه بندی و ارجاع میشه این :

/\w+-\w+/img


❤️ حالا مثال ما خودش کوچولوعه و به چشم نمیاد :(
ولی توی ریجکس های پیشرفته تر مارو از بازنویسی رها میکنه 😬

👋 آموزش رو همینجا به پایان میرسونم و بهتون یه سایت معرفی میکنم که زبان فارسی رو هم پشتیبانی میکنه (خودم اضافه کردم☝️) و میتونید همین موارد رو اونجا هم یاد بگیرید (از حالت فقط متنی خارجه و روش خوبیه)

Site : Regex 🐱


#regex #regular_expression
#regex_7
☕️ @CodeExplore
Please open Telegram to view this post
VIEW IN TELEGRAM
14❤‍🔥3🔥3
8️⃣ آموزش ریجکس (regex) (عبارت های با قاعده) ☺️ - قسمت هشتم

🕒 خب ، امروز قراره با چنتا دسته کارکتر دیگه آشنا بشیم.
قبلا با d\ و w\ آشنا شدید و نیازی نمیبینم دوباره تکرارش کنم 😔

بزارید مثل همیشه یه متن اینجا بزارم و روی اون چنتا دسته کارکتر تست کنیم:

Toyota Corolla
Ford Raptor
Audi A3
Honda Civic
dodge challenger
BMW M6
peugeot pars 1389
roox TU5 $mark


دسته کارکتر w\ برای حروف انگلیسی - اعداد و علامت آندلاین بود ، حالا دسته کارکتر W\ دقیقا برعکس بالایی عمل میکنه (یعنی هرچیزی رو قبول میکنه، جز حروف ، اعداد و علامت آندلاین)

/\W/img

 , , , , , , , , , , , , , $


❤️ شاید الان بگید ، چرا هیچی برنگردوند؟ و فقط یه دلار خالی آخرشه! باید بگم ، هرچیزی غیر از حروف و اعداد ، فاصله (هر نوع فضای سفید) رو هم شامل میشه ؛ همچنین نمادهای دیگه رو :)

👍 دقیقا برای d\ هم ، D\ داریم. که هرچیزی رو قبول میکنه جز اعداد !

/\D/img

همه حروف و علامت ها و فضای خالی به جز اعداد


دسته کارکتر جدیدی که میخوام بهتون بگم ، s\ که فقط فضاهای خالی رو در نظر میگیره (هر نوع فضایی، مثل اینتر یا اسپیس)
و برعکس همین رو هم داریم که میشه ، S\ که هرچیزی رو قبول میکنه ، جز فضای خالی.

/\s/img

هر نوع فضای خالی 


/\S/img

همه چیز ، به جز فضاهای خالی


🐱 چنتا دسته کارکتر دیگه هم داریم که احتمالا توی برنامه نویسی ازشون زیاد استفاده کردید ، مثل n\ که فقط Enter رو قبول میکنه (همون لاین جدید)

شاید در نگاه اول ، اینا به کار نیان، اما در متن های مختلف ، ریجکس های ترکیبی کمک خیلی زیادی بهتون میکنه 🙄


دسته کارکتر بعدی t\ که معنیه tab رو میده و اگه توی متن از tab استفاده بشه ، با تَب ها مطابقت داره 🐱

قبلا در مورد نماد ^ صحبت کردیم ، اما گفته بودم که فقط برای مشخص کردن اول جمله به کار نمیاد!
یکی دیگه از کاربر های ^ توی براکت ها مشخص میشه:
فرض کنید همچین ریجکسی داریم:

/[a-c]+/img


🖱 ریجکس بالا، تمامی عباراتی رو برمیگردونه که دنباله ایی از کارکتر های a تا c باشن.

🐱 حالا ریجکس پایین ، میاد حالت بالا رو معکوس میکنه! یعنی تمامی عبارت هایی رو برمیگردونه که دنبال ایی از کارکترهای غیر از a و c باشن :)

/[^a-c]/img


نماد ^ توی براکت ها، معکوس سازی رو انجام میده 👻⚡️


🕓 بیاید قبل از اتمام آموزش امروز ، دسته کارکتر هایی که یاد دادیم رو به صورت براکتی بنویسیم (مثلا w\ میشه [a-zA-Z0-9_])

دسته کارکتر s\ به صورت براکتی میشه :
/[\r\n\t\f\v]/img


🔔 دسته های r\ و f\ و v\ هم یجور فضای خالی به حساب میان.

دسته کارکتر S\ هم به صورت براکتی میشه:

/[^\r\n\t\f\v]/img


یعنی ، با یدونه ^ ، همه چی رو معکوس کردیم.


حالا شما برای من تو کامنت دسته های d\ و D\ و W\ رو به صورت براکتی بنویسید :)

روز خوبی داشته باشید 😔


#regex #regular_expression
#regex_8
☕️ @CodeExplore
Please open Telegram to view this post
VIEW IN TELEGRAM
11🔥5❤‍🔥4
9️⃣ آموزش ریجکس (regex) (عبارت های با قاعده) ☺️ - قسمت نهم (قسمت پایانی)

امروز آخرین مورد رو در ریجکس کار میکنیم و شما را به خدای بزرگ میسپاریم 🤩

❤️ باز مث همیشه متن زیر رو در نظر بگیرید:

pen: 1 rial
drug: 2 rial
paper: 3 rial
cake: 4 £
car: 5 $


🧠 خب ، ما قراره از متن بالا، اعدادی رو پیدا کنیم که بعدشون ریال باشه. در گام اول همچین ریجکسی به ذهنتون میرسه :

/\d+ rial/img

1 rial, 2 rial, 3 rial


خب الان مشکل ما حل شد ، اما اگر دقت کنید ، عباراتی که برگردوند ، همراه خودشون rial رو هم داره. اگه ما فقط نیاز به اعداد داشته باشیم باید چیکار کنیم؟
اینجاست که ریجکس یه نماد دیگه رو معرفی میکنه برای حل مشکل و اون نماد اینه: (=?)
قبل از توضیح بزارید ریجکسشو بنویسم:
/\d+(?= rial)/img

1, 2, 3


🏠 الان متوجه شدید که با این روش، دیگه rial توی عبارات پیدا شده نمایان نمیشه. در واقع ریجکس بالا به فارسی میشه این : اعدادی رو پیدا کن که قبل از rial وجود داشته باشن.

حالا فرض کنید میخوایم اعدادی رو بدست بیاریم که بعدشون rial نباشه (فقط میدونیم بعدشون ریال نیست ، و ممکنه هرچیزی بعدشون باشه)

🔔 برای اینکار از نماد (!?) استفاده میکنیم ، که دقیقا معکوس نماد بالا عمل میکنه. باز ریجکسشو مینویسم و بعد توضیح میدم :

/\d(?! rial)/img

4, 5


🥸 به زبان فارسی، ریجکس بالا یعنی دنبال اعدادی بگرد که قبل از rial نباشن.


⛔️ این دو نمادی که گفتم ، برای ادامه جمله است ، پس هیچ وقت اول ریجکس نوشته نمیشه!

⚫️ دوتا نماد دیگه هم داریم که دقیقا مثل همین دوتا نماد بالا کار میکنن، اما برای بررسی کلمه قبلی هستن (یعنی چک میکنن فلان چیز قبل عبارت ما اومده یا نه)

بیاید متنو یه تغییری بدیم و اینارم تست کنیم :

13 05 1381
17 02 1380
22 03 1386
11 11 1380


❗️ با توجه به متن بالا، ما چندین تاریخ تولد داریم؛ ما میخوایم فقط اعداد ماه تولد رو بدست بیاریم (اعداد وسط)
پس اگه بخوایم فارسی ریجکس بنویسیم میگیم: دنبال اعدادی 2 رقمی بگرد که قبلشون یه عدد 2 رقمی دیگه باشه.
ریجکسش میشه این:

/(?<=\d{2} )\d{2} /img

05 , 02 , 03 , 11


💡 نماد بالا به این صورته : (=<?) و مقادیر شما باید دقیقا بعد از = قراره بگیره!

نماد بعدی هم به این صورته : (!>?) که معنی فارسیش میشه ، دنبال چیز بگرد که بعد از فلان چیز قرار نگرفته باشه!

برای این مثال نمیزنم و میخوام خودتون توی کامنت یه متن و یه ریجکس بنویسید که از نماد آخری استفاده کنه 😬


آموزش ریجکس ما همینجا به پایان میرسه 😱
روز خوبی داشته باشید و برای یادگیری تمرین کنید :)


من بازم 2 تا سایت قبلی رو معرفی میکنم
که میتونید با جفتش ریجکس رو یاد بگیرید و تمرین کنید :

site 1
site 2


#regex #regular_expression
#regex_9 #regex_end
☕️ @CodeExplore
Please open Telegram to view this post
VIEW IN TELEGRAM
7❤‍🔥4🔥4
0️⃣1️⃣ آموزش ریجکس (regex) (عبارت های با قاعده) ☺️ - قسمت دهم (ذکر چندین مثال)

خب دوستان قراره امروز چنتا مثال فقط حل کنیم تا ریجکس یکم بیشتر دستمون بیاد :)

برای اینکه مثالامون واقعی تر باشه هم از مواردی استفاده میکنم که قبلا استفاده کردم ، یا توی ریجکس خیلی پر استفاده است.

⏯️ اولین مثال ، مثال خیلی کاربردیه، و برای پیدا کردن انواع ایمیل به کار میره. (ممکنه از طولش بترسید ولی خیلی سادست)

/(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)/img


ریجکس بالا یه مدل ساده از ولیدیشن ایمیله! و مدل های بهتری هم هست که ولیدیشن با فیلتر رو پیاده سازی کنه!

2️⃣ فرض کنید یه صفحه html دانلود کردید که میخواید هم تگ های img رو ازش واکشی کنید. برای این کار از ریجکس زیر استفاده میکنیم:

/<img .*\s*.*>/img


3️⃣ حالا فرض کنید یه متن طولانی دارید و میخواید آدرس های اینترنتی رو ازش واکشی کنید که https باشن، ریجکس این مورد یکم طولانیه :

/https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,4}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)/img



حالا چرا فقط مثال زدم و توضیح خاصی ندادم؟
چون میخوام خودتون برای خودتون توضیح بدید و درک کنید که دقیقا چه اتفاقی افتاده. 😒


توی کامنت برام مثال بزنید، یا کاربرد های دیگشو بگید (یا اگه ریجکس چیزی رو مطمئن نیستید بیاید با هم ریجکسشو پیدا کنیم)


روز خوبی داشته باشید 😔


#regex #regular_expression
#regex_10 #regex_example
☕️ @CodeExplore
Please open Telegram to view this post
VIEW IN TELEGRAM
9🔥5❤‍🔥3