بریم یه نماد دیگه رو هم یاد بگیرم و اون هم نماد $ (دلار ساین) است که دقیقا برعکس ^ برای آخر جمله استفاده میشه
بریم یه متن بنویسیم و روش یه تست پیاده کنیم:
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
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥15⚡3🔥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
پس با این وجود ریجکس بالا از متن ما دوتا کلمه shell و shelllll رو پیدا میکنه (دیگه چیزیو پیدا نکرد که مشابه هم باشه
/ab*c/img
ریجکس بالا دنبال عبارت هایی میگرده که اولشون a ، آخرشون c و بینشون کارکتر b به تعداد 0 یا اِن بار باشه !
منم توی پست فردا ادامه میدم
روز خوبی داشته باشید
بهتون تمرین میگم که توی کامنت برام جوابشو بنویسید (با هوش خودتون و چیزایی که از اینجا یاد گرفتید (کسایی که از قبل بلدن لطفا پاسخگو نباشن
br ber beer
#regex #regular_expression
#regex_3
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡12❤🔥4🔥3