شاید الان بگید توابع آماده برای پیدا کردن کلمه وجود داره! ولی بعضی وقتا ما دنبال یه کلمه ثابت نیستیم! بزارید یه مثال ریز بزنم تا متوجه بشید
سلام من امیر هستم . شماره من 09112345678 است و همچنین شماره دوستمم 09112345050 است. من دوستمو خیلی دوست دارم ، اسمش ریجکسه!
توی متن بالا ، اگه بخوایم شماره تلفن ها رو در بیاریم باید چیکار کنیم؟ آفرین ، کاربرد ریجکس دقیقا همینجا نمایان میشه !
همونجوری که توی عنوان هم نوشتم، Regex به فارسی میشه عبارت منظم ، یعنی اگه بخواید توی رشته (متن) دنبال بخش های منظم بگردید که از الگوی خاصی پیروی میکنن ، میتونید از regex استفاده کنید
همچنین کاربرد ریجکس فقط توی پیدا کردن نیست ، یه زمانی ما میخوایم چیزایی که پیدا کردیم رو با یه چیز دیگه جایگزین کنیم ، مثلا تو همین مثال بالا اگه فردی همچین نظری رو توی سایتمون ثبت کرد ما نمیخوایم همینجوری نمایش داده بشه بلکه میخوایم شماره های تلفن با *** جایگزین بشن ، پس بازم ریجکس میتونه بهمون کمک کنه
به صورت کلی هدف عمو ریجکس اینه که به صورت پیشرفته بتونیم داخل متنمون بگردیم و عبارتی که الگو ثابتی داره رو پیدا کنیم
عبارت منظم یک گروه از کارکترها یا نمادهاست که برای پیدا کردن یک الگوی مشخص در یک متن به کار گرفته می شود.
#regex #regular_expression
#regex_1 #regex_start
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡16❤🔥7🔥5
من که میگم ریجکس ایزی پیزیه (easy peasy lemon squeezy)
چنتا از استفاده هاشم توی زبان های مختلف این زیر میزارم :
$str = "Our Channel is CodeExplore";
$pattern = "/CodeExplore/"; // Regex
echo preg_match_all($pattern, $str);
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)
import re
str = "Our Channel is CodeExplore";
pattern = r"CodeExplore" # Regex
x = re.search(pattern, str)
print(x)
این پست رو همینجا به پایان میرسونم تا خسته نشید، در پست بعدی با خود ریجکس آشنا میشیم و دیپ تر میشیم
روز خوبی داشته باشید
#regex #regular_expression
#regex_1 #regex_start
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡14🔥7❤🔥5
در پست قبلی باهم در مورد تاریخچه و کاربرد ریجکس صحبت کردیم ، امروز قراره به طور رسمی وارد آموزش ریجکس بشیم و یخورده عمیق تر بررسی کنیم
قبل از شروع آموزش اصلی باید بهتون بگم تو این آموزش اول ریجکس رو مینویسم و زیرش خروجی که به ما میده. همچنین میخوام بهتون دوتا سایت معرفی کنم که برای تمرین در مورد ریجکس خیلی عالیه
و بهتره بعد از آموزش هر روز خودتونم برید و تست کنید :
فرض کنید متنی مثل زیر داریم :
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
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/gim
amir, amir, amir
حالا با ریجکس بالا همه اسم هایی که فقط با amir شروع میشن و اول خط هستن رو به دست آوردیم
برای امروز بسه
با ما همراه باشید تا آموزش بعدی
#regex #regular_expression
#regex_2
Please open Telegram to view this post
VIEW IN TELEGRAM
regex101
regex101: build, test, and debug regex
Regular expression tester with syntax highlighting, explanation, cheat sheet for PHP/PCRE, Python, GO, JavaScript, Java, C#/.NET, Rust.
⚡17❤🔥6🔥5
بریم یه نماد دیگه رو هم یاد بگیرم و اون هم نماد $ (دلار ساین) است که دقیقا برعکس ^ برای آخر جمله استفاده میشه
بریم یه متن بنویسیم و روش یه تست پیاده کنیم:
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
خب توی آموزش قبلی در مورد نماد {} و * صحبت کردیم ، امروز قراره مسئله آموزش قبل رو حل کنیم و چنتا چیز جدید یاد بگیریم
بزارید مثال قبلی رو اینجا هم بزارم:
JavaScript
PostScript
shelllll
ActionScript
PowerShell
AppleScript
Script
Network
hello1
PHP
قبل از هرچیزی میخوام بهتون در مورد دسته های کارکتری بگم (دسته های کارکتر همون کارکتر های کنترلی در زبان های برنامه نویسی هستند مثل n\)
صد در صد با n\ آشنا هستید و میدونید که این کارکتر خط جدید ایجاد میکنه و کار Enter رو انجام میده
توی ریجکس هم همچین کارکتر هایی داریم که کار مشخصی رو انجام میدن (مثلا همین n\ رو داریم که خط جدید مشخص میکنه)
/\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 به 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
/\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 بار باشه !
آموزش امروزمونم تموم شد ، امیدوارم خوشت اومده باشه
روز خوبی داشته باشید
#regex #regular_expression
#regex_4
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡16❤🔥6🔥3😁1
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
/09\w{9}/img
09112345656, 09118174522
برای حل این مشکل با یه دسته کارکتر دیگه به نام 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
(
/a(z|o)m/g
aom, azm
پرانتز در ریجکس به معنیه گروپ بندیه که در آموزش های بعدی مفصل تر در موردش صحبت میکنیم (ولی فعلا فرض کنید دقیقا مثل براکت عمل میکنه)، و علامت | (پایپ) هم معنیه "یا" رو میده (که احتمالا در برنامه نویسی ازش خبر دارید)
آموزش امروزمونم تموم شد
بهتون تمرین میگم که توی کامنت برام جوابشو بنویسید (با هوش خودتون و چیزایی که از اینجا یاد گرفتید (کسایی که از قبل بلدن لطفا پاسخگو نباشن
beer deer feer
#regex #regular_expression
#regex_5
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17❤🔥2⚡2
python
python%%10
python 3.12
pycharm
py file
sl file
من میخوام ریجکسی رو بنویسم که اولش py داشته باشه و در ادامه میتونه هرچیزی داشته باشه (هم فضای خالی، هم نماد، هم هرچیز دیگه ایی)
من یه ریجکس ساده مینویسم با استفاده از w\ ، که فرقشو با نقطه ببینید:
/py\w*/img
python, python, python, pycharm, py
/py.*/img
python , python%%10, python 3.12, py file
a, an, and, on, android
برای اینکه مشخص کنیم یه کارکتر اختیاریه (وجود داره یا نه) از نماد ? استفاده میکنیم:
/an?\w*/g
a, an, and, android
بزارید بازم متنو تغییر بدم (نزاریدم خودم تغییر میدم
amirroox(Dani) Score: 1000
amin Score: 0
amirMasood Score: 999
korosh Score: 90
Agha Reza Score: 55
flani Score: 6
ما میخوایم ریجکسی رو بنویسیم که اسم افراد به همراه امتیازشون رو برای ما برگردونه ، البته یه شرط داریم ، و اونم اینه که ، اونایی رو برگردونه که امتیاز 2 ، 3 و 4 رقمی دارن (امتیاز تک رقمی نمیخوایم
حالا با این تفاسیر بریم ریجکسو بنویسیم:
/.* Score: \d{2,4}/img
amirroox(Dani) Score: 1000, amirMasood Score: 999, korosh Score: 90, Agha Reza Score: 55
توی ریجکس بالا {2,4} رو میبینید ، قبلا در مورد حالت {n} صحبت کرده بودیم که معنیه تعداد رو میداد ، حالا وقتی کاما میزاریم ، یعنی یه رنج مشخص میکنیم! یعنی تعداد ما 2 تا 4 باشه
همچنین توجه داشته باشید که داخل آکولاد هیچ فضای خالی نباید وجود داشته باشه
aab, abb, acb, adb, aeb, agb, akb, alb
/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[1-5]b/g
ریجکس بالا ، کلماتی رو انتخاب میکنه که اولشون a ، آخرشون b و بینشون اعداد 1 تا 5 باشه (مثلا اینارو قبول میکنه: a2b, a4b و اینارو قبول نمیکنه: a7b, a9b)
آموزش امروزمونم تموم شد
روز خوبی داشته باشید
#regex #regular_expression
#regex_6
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡16❤🔥3🔥2
قبلا در مورد براکت صحبت کردیم و گفتیم که پرانتز رو فعلا مشابه بدونید؛ اما امروز قراره این مبحث رو باز ترش کنیم.
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-Z0-9_]
یعنی شما با براکت خیلی راحت میتونید ، رنج های محتلفی ایجاد کنید :)
وقتی از گروه بندی استفاده میکنیم، یعنی ریجکس خودمون رو به بخش ها واحد دسته بندی کردیم (مثلا توی مثال بالا ، اول اسمه، دوم یه عدد 4 رقمی که سال تولده. ما میتونیم توی ریجکس گروه اول رو به اسم اختصاص بدیم و گروه دوم رو به سن و در دریافت مقادیر یه دسته بندی برای خودمون داشته باشیم)
([a-zA-Z]*) (\d{4})
amir 2002, ali 2000, daniyal 2002, hamid 2012, sobhan 1980
برای اینکه بفهمیم این اصلا کجا کاربرد داره ، من توی جاوا اسکریپت یه اسکریپت ساده مینویسم.
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 الی اِن تا حروف داشته باشه و در ادامه یک دَش قرار بگیره و در آخر همان گروهی که پیدا شده در ادامه دَش وجود داشته باشه.
برای مثال ، ریجکس بالا بدون گروه بندی و ارجاع میشه این :
/\w+-\w+/img
Site : Regex
#regex #regular_expression
#regex_7
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡14❤🔥3🔥3
دیباگ کردن کد Regex 🆒
💬 یکم قبل تر ، آموزش رجکس گذاشتیم و بعضی دوستان میگفتن رجکس بخاطر باگ یابی سختش، استفاده نمیشه...
ℹ️ سایت Regex101 یه ابزار خیلی باحال و آنلاین برای ساخت و تست عبارات منظم (Regular Expressions) هست.میتونی توش ریجکسهات رو بنویسی و همون لحظه نتیجهش رو ببینی. توضیحات واضحی هم درباره هر بخش از ریجکس میده که کارت رو خیلی راحتتر میکنه. خلاصه، اگه با ریجکس سر و کار داری، حتماً بهش سر بزن!
#regex
☕️ @CodeExplore
#regex
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡11🔥3❤🔥2
قبلا با 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/img
همه حروف و علامت ها و فضای خالی به جز اعداد
دسته کارکتر جدیدی که میخوام بهتون بگم ، s\ که فقط فضاهای خالی رو در نظر میگیره (هر نوع فضایی، مثل اینتر یا اسپیس)
و برعکس همین رو هم داریم که میشه ، S\ که هرچیزی رو قبول میکنه ، جز فضای خالی.
/\s/img
هر نوع فضای خالی
/\S/img
همه چیز ، به جز فضاهای خالی
دسته کارکتر بعدی t\ که معنیه tab رو میده و اگه توی متن از tab استفاده بشه ، با تَب ها مطابقت داره
قبلا در مورد نماد ^ صحبت کردیم ، اما گفته بودم که فقط برای مشخص کردن اول جمله به کار نمیاد!
یکی دیگه از کاربر های ^ توی براکت ها مشخص میشه:
فرض کنید همچین ریجکسی داریم:
/[a-c]+/img
/[^a-c]/img
نماد ^ توی براکت ها، معکوس سازی رو انجام میده
دسته کارکتر s\ به صورت براکتی میشه :
/[\r\n\t\f\v]/img
دسته کارکتر S\ هم به صورت براکتی میشه:
/[^\r\n\t\f\v]/img
یعنی ، با یدونه ^ ، همه چی رو معکوس کردیم.
حالا شما برای من تو کامنت دسته های d\ و D\ و W\ رو به صورت براکتی بنویسید :)
روز خوبی داشته باشید
#regex #regular_expression
#regex_8
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡11🔥5❤🔥4
امروز آخرین مورد رو در ریجکس کار میکنیم و شما را به خدای بزرگ میسپاریم
pen: 1 rial
drug: 2 rial
paper: 3 rial
cake: 4 £
car: 5 $
/\d+ rial/img
1 rial, 2 rial, 3 rial
اینجاست که ریجکس یه نماد دیگه رو معرفی میکنه برای حل مشکل و اون نماد اینه: (=?)
قبل از توضیح بزارید ریجکسشو بنویسم:
/\d+(?= rial)/img
1, 2, 3
حالا فرض کنید میخوایم اعدادی رو بدست بیاریم که بعدشون rial نباشه (فقط میدونیم بعدشون ریال نیست ، و ممکنه هرچیزی بعدشون باشه)
/\d(?! rial)/img
4, 5
بیاید متنو یه تغییری بدیم و اینارم تست کنیم :
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
Please open Telegram to view this post
VIEW IN TELEGRAM
Regexlearn
Regex 101 - FA
در این آموزش می توانید اصول ریجکس را بیاموزید.
⚡7❤🔥4🔥4
خب دوستان قراره امروز چنتا مثال فقط حل کنیم تا ریجکس یکم بیشتر دستمون بیاد :)
برای اینکه مثالامون واقعی تر باشه هم از مواردی استفاده میکنم که قبلا استفاده کردم ، یا توی ریجکس خیلی پر استفاده است.
/(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)/img
ریجکس بالا یه مدل ساده از ولیدیشن ایمیله! و مدل های بهتری هم هست که ولیدیشن با فیلتر رو پیاده سازی کنه!
/<img .*\s*.*>/img
/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
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡9🔥5❤🔥3