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

سایت کد‌اکسپلور:
CodeExplore.ir
👨🏻‍💻 ارتباط با ما :
@CodeExploreSup
گروه :
@CodeExplore_Gap
تبلیغات در کد اکسپلور :
@CodeExploreAds
Download Telegram
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