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

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