آموزش regex، معایب و مزایا و همه نکات کاربردی
یکی از تخصصی ترین موضوعات گوگل آنالیتیکس Regular Expression است. وقتی از گوگل آنالیتیکس (که آموزش کامل ورایگانش رو از اینجا می تونید دانلود کنید) یا نرم افزارهای دیگر برای بررسی و تحلیل وبسایتتان استفاده میکنید، حتما سرو کارتان با عبارات با قاعده یا همان regex هم میافتد. در این مقاله به بررسی این مفهوم خواهیم پرداخت.
Regex یا Regular Expression چیست؟
Regex به منظور سرچ استفاده می شود یعنی کار اصلی آن جستجو است تمامی کارهایی که توسط Regex انجام می شود برمبانی سرچ یا واکشی (fetch) است خود کلمه واکشی به معنی جستجو است. Regex به شما این امکان رو میده که براساس یک Pattern خاص عمل جستجو را یا مطابقت دادن یک فیلد را انجام دهید ویرایشگری مانند ++Notepad از Regext به مظور سرچ و Replace استفاده می کند. Regex به منظور فیلتر کردن نیز می تواند مورد استفاده قرار گیرد.
مزیت های Regex | معایب Regex |
1- ذخیره کردن زمان برای شما در بیشتر مواقع
2- سادگی دستوری 3- کاربردی بودن 4- عمل واکشی یا جستجو را در کسری از ثانیه انجام میدهند. 5- در جاهای که مقدار تگ ها متفاوتی وجود داشته باشد مثل Xml و Html برای واکشی کردن مورد استفاده قرار می گیرد. 6- یک خط Regex می تواند با 100 خط کد برای واکشی جایگزین شود ! 7- ساده ترین روش برای برش (Trim) و چسباندن (concatenation) است 8- برای برنامه نویسان مبتدی که زیاد با کد نویسی آشنا نیستند مورد استفاد قرار می گیرد. 9- خطای کمتر نسبت به کد سفارشی 10-Regex به زبان محاوره خارجی بسیار نزدیک است. 11- عمل parse کردن را در بدترین شرایط انجام میدهد. |
1- تنبل کننده ذهن برنامه نویس
2- نداشتن راه حلی برای مطابقت پسورد 3- Regex به Write only معروف است یعنی نمی توانید خودتان آن را توسعه دهید بلکه فقط می تواند از متودهای از پیش تعریف شده آن استفاده کنید. 4-Regex فقط برای متن است. 5- سختی در خواندن Regex به گفته برخی چون باید یک Dictionary مربوط به آن را حفظ کنید. |
کاربردهای regex
1- اعتبارسنجی داده : برای نمونه آیا یک رشته زمانی به درستی ترکیب یافته است یا نه.
2- کاوش داده : به خصوص وب اسکرپینگ که در آن همه صفحههایی که شامل مجموعه خاص از کلمات هستند در نهایت با ترتیب خاصی پیدا میشوند.
3- دستکاری دادهها : تبدیل داده از قالب خام به یک قالب دیگر.
4- تجزیه متن : برای نمونه گردآوری همه پارامترهای GET در URL و دریافت یک متن که درون یک مجموعه از پرانتزها قرار دارد.
5- جایگزینی رشته : برای نمونه در زمان کدنویسی در یک IDE برای ترجمه کلاس جاوا به سی شارپ در شیء JSON متناظر باید (;) با (,) جایگزین شوند، به حالت حروف کوچک درآید و hc اعلان نوع خودداری شود.
6- هایلایت کردن ساختار، تغییر دادن نام فایلها، بررسی بستهها و بسیاری کاربردهای دیگر که با رشتهها سرور کار دارند و دادهها باید متنی باشد، همگی با استفاده از regex قابل اجرا هستند.
آموزش ویدیویی و مفاهیم مهم
۱. مفاهیم پایهای رجکس
-
رجکس چیست؟ رجکس یک الگوی متنی است که برای جستجو، تطبیق و دستکاری رشتهها استفاده میشود. این الگوها از کاراکترها و نمادهای خاص تشکیل شدهاند.
-
کاربردهای رجکس:
-
اعتبارسنجی فرمها (مانند ایمیل، شماره تلفن).
-
جستجو و جایگزینی متن.
-
تجزیه و تحلیل دادههای متنی.
-
۲. ساختار اصلی رجکس
-
الگوی ساده: یک الگوی ساده میتواند یک کلمه یا عبارت باشد. مثال: الگوی
hello
با رشتهhello world
تطبیق میکند. -
کاراکترهای خاص: رجکس از کاراکترهای خاص برای ایجاد الگوهای پیچیدهتر استفاده میکند. مثال:
.
(هر کاراکتر)،*
(تکرار صفر یا بیشتر)،+
(تکرار یک یا بیشتر).
۳. کاراکترهای خاص رجکس
الف. کاراکترهای تطبیق
-
.
: هر کاراکتر به جز خط جدید. مثال:a.c
باabc
،aac
،adc
تطبیق میکند. -
\d
: هر رقم (معادل[0-9]
). مثال:\d\d
با12
،45
تطبیق میکند. -
\w
: هر کاراکتر الفبایی، عددی یا زیرخط (معادل[a-zA-Z0-9_]
). مثال:\w\w
باab
،A1
تطبیق میکند. -
\s
: هر فضای خالی (فاصله، تب، خط جدید). مثال:a\sb
باa b
تطبیق میکند.
ب. کاراکترهای تکرار
-
*
: صفر یا بیشتر از کاراکتر قبلی. مثال:a*
با""
،a
،aa
تطبیق میکند. -
+
: یک یا بیشتر از کاراکتر قبلی. مثال:a+
باa
،aa
تطبیق میکند. -
?
: صفر یا یک بار از کاراکتر قبلی. مثال:a?
با""
،a
تطبیق میکند. -
{n}
: دقیقاًn
بار از کاراکتر قبلی. مثال:a{3}
باaaa
تطبیق میکند. -
{n,}
: حداقلn
بار از کاراکتر قبلی. مثال:a{2,}
باaa
،aaa
تطبیق میکند. -
{n,m}
: بینn
تاm
بار از کاراکتر قبلی. مثال:a{2,4}
باaa
،aaa
،aaaa
تطبیق میکند.
ج. کاراکترهای گروهبندی
-
[]
: تطبیق با هر یک از کاراکترهای داخل براکت. مثال:[abc]
باa
،b
،c
تطبیق میکند. -
[^]
: تطبیق با هر کاراکتر به جز کاراکترهای داخل براکت. مثال:[^abc]
باd
،1
تطبیق میکند. -
()
: گروهبندی بخشی از الگو. مثال:(abc)+
باabc
،abcabc
تطبیق میکند.
د. کاراکترهای جایگاه
-
^
: شروع رشته. مثال:^abc
باabcdef
تطبیق میکند. -
$
: پایان رشته. مثال:abc$
باxyzabc
تطبیق میکند. -
\b
: مرز کلمه. مثال:\bcat\b
باcat
درThe cat is here
تطبیق میکند.
۴. مثالهای کاربردی رجکس
الف. اعتبارسنجی ایمیل
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$
-
^[a-zA-Z0-9._%+-]+
: بخش قبل از @ (نام کاربری). -
@[a-zA-Z0-9.-]+
: بخش دامنه. -
\.[a-zA-Z]{2,}$
: بخش پسوند دامنه (مانند .com).
ب. اعتبارسنجی شماره تلفن
^\+?\d{1,3}[-.\s]?\(?\d{1,4}\)?[-.\s]?\d{1,4}[-.\s]?\d{1,9}$
-
^\+?
: کد کشور (اختیاری). -
\d{1,3}
: کد منطقه. -
[-.\s]?
: جداکنندههای اختیاری. -
\(?\d{1,4}\)?
: کد منطقه داخل پرانتز (اختیاری). -
\d{1,9}
: شماره تلفن.
ج. جستجوی تاریخ
^\d{4}-\d{2}-\d{2}$
-
\d{4}
: سال (چهار رقم). -
\d{2}
: ماه و روز (دو رقم).
۵. استفاده از رجکس در زبانهای برنامهنویسی
الف. جاوااسکریپت
let regex = /hello/; let str = "hello world"; console.log(regex.test(str)); // true
ب. پایتون
import re regex = r"hello" str = "hello world" print(re.search(regex, str)) # <re.Match object; span=(0, 5), match='hello'>
ج. PHP
$regex = "/hello/"; $str = "hello world"; echo preg_match($regex, $str); // 1
از پیج عرفان مولا:
دانلود آموزش Regex در یک ساعت
حتما در کنار این مطلب دانلود کنید: آموزش صفر تا صد برنامه نویسی (رایگان)