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

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