regex چیست؟ تمرینات، ابزارها و قوانین آن که باید بدانید

رتبه: 5 ار 1 رای SSSSS
regular expression
نویسنده: تیم تولید محتوا زمان مطالعه 6 دقیقه

regex مخفف regular expression به معنای عبارت منظم است که به آن عبارت باقاعده نیز گفته می شود. عبارت باقاعده مجموعه ای از کاراکترهای تشکیل دهنده یک الگو است که می توان آن را در یک رشته جستجو کرد. از Regex می توان برای اعتبارسنجی ها مانند اعتبارسنجی شماره کارت عابر بانک، برای جستجو مانند مطابقت متن پیچیده و یا برای جایگزینی متن تطبیق یافته با یک رشته دیگر استفاده کرد. عبارت های با قاعده چند پشتیبان زبان فوق العاده دارد، بنابراین با یادگیری آن می توانید در بسیاری از زبان های برنامه نویسی از آن استفاده کنید.

افراد بسیاری وجود دارند که regex را کاملاً نادیده می گیرند. آنها را سرزنش نمی کنیم زیرا ساختار گرامری regex پیچیده است و درست مانند زبان های خط فرمان می توانند آزاردهنده باشند. ممکنه هر چیز جدیدی ترسناک باشد و در ابتدا یادگیری آن غیرممکن به نظر برسد اما شروع کنید، جسور باشید و سعی کنید.

Regex

regex ریشه در علوم عصب شناسی و ریاضیات دارد. ریشه آن در برنامه نویسی به سال 1968 برمی گردد که کن تامپسون (Ken Thompson) آن را در ویرایشگر متنی QED برای جستجوی متن پیاده سازی کرد. امروزه بخشی از بسیاری از زبان های برنامه نویسی مانند پرل، جاوا، پایتون، روبی و جاوا اسکریپت است.

بیایید چند مثال در مورد نحوه عملکرد regex را بررسی کنیم.

در مثال های اینجا از جاوا اسکریپت استفاده می کنیم. با توضیح یک مثال ساده شروع می کنیم، regex زیر را نگاه کنید:

regex

regex بالا یک رشته جستجو می کند که با کاراکتر “B” شروع شود و نماد + بعد از براکت می گوید که حداقل یکی از کاراکترها داخل براکت “a” تا “z”، “A” تا “Z” و اعداد 0 تا 9 را باید شامل شود.

نماد + یک quantifier (شمارنده یا کمیت سنج) است. یک quantifier تعداد تکرار و موقعیت کاراکترهای داخل براکت را مشخص می کند.

نمونه زیر را برای پیدا کردن موارد تطبیقی در نظر بگیرید:

Basket , bulb, B12 vitamin, BaSO4 , N BC company

عبارت باقاعده بالا جستجو را در Basket متوقف می کند و پاسخ مثبت برمی گرداند. دلیلش این است که اگر می خواهید regex تمام موارد احتمالی را بررسی کند باید اصلاح کننده (modifier) سراسری “g” را با آن اضافه کنید تا جستجو ادامه پیدا کند.

حالا نحوه استفاده از این عبارت منظم را در جاوا اسکریپت نشان می دهیم. از متد test استفاده می کنیم، این تابع در صورت یافتن یک تطبیق مقدار true در غیر این صورت مقدار false را بر می گرداند.

var input = “your test string”, regex = /B[a-zA-Zd]+/;

if(!regex.test(input))

alert(‘No match is found’);

else

alert(‘A match is found’);

یک متد دیگر را امتحان کنیم: با اضافه کردن اصلاح کننده g به عبارت و با استفاده از متد match همه موارد تطبیقی موجود را در یک آرایه را برمی گرداند.

var input = “your test string”,

regex = /B[a-zA-Zd]+/g,

/*برای پیدا کردن همه موارد تطبیقی به عیارت اضافه شده است gاصلاح کننده */

ary = input.match(regex);

if(ary===null)

alert(‘No match is found’);

else

alert(‘matches are: ‘ + ary.toString());

متد replace چگونه است؟ این متد را با regex امتحان می کنیم.

var input = “your test string”,

regex = /B[a-zA-Zd]+/g;

alert(input.replace(regex, “#”));

تمرین Regex

برای یادگیری بهتر می توانید “تمرینات regex” را در گوگل جستجو کرده و آنها را حل کنید. در اینجا تمرینات مورد انتظار با توجه به سطح دشواری آنها آورده شده است.

تمرینات پایه

برای مبتدیان اعتبارسنجی رمز عبور کافی است. به عنوان مثال برای یک رمز عبور با طول 8 تا 16 کاراکتر شامل حروف الفبا همراه با کاراکترهای خاص مجاز (به دلخواه) یک regex بنویسید.

تمرینات وسط

در این نوع تمرینات باید با داده های بیشتری در دنیای واقعی تمرین کنید و نکات بیشتری درباره regex مانند گزاره های (شرطی) قبل و بعد از عبارت و گروه های منطبق سازگار را یاد بگیرید.

    • اعتبارسنجی کدهای PIN، هگزا دسیمال ها، تاریخ ها، شناسه ایمیل ها.
    • جایگزینی صفر های قبل از عدد، فاصله ها، مجموعه کلمات تطبیق یافته.
    • بیرون کشیدن قسمت های مختلف از یک URL.

تمرینات پیشرفته

می توانید راه حل تمرینات بالا را بهینه سازی کنید، به عنوان مثال بهینه ترین regex برای ایمیل کاراکترهای زیادی دارد. بنابراین ادامه دهید تا جایی که احساس رضایت داشته باشید و این کافی است. می توانید موارد زیر را نیز امتحان کنید:

  • تجزیه HTML یا XML (گرچه در دنیای واقعی از انجام این کار ناامید می شوید زیرا استفاده از عبارت های با قاعده برای تجزیه یک زبان نامنظم مثل HTML هرگز آن را بی خطا نمی کند. علاوه بر این تجزیه XML یک کار دشوار است و بیشتر برای کاربران سطح خیلی پیشرفته مناسب است)
  • جایگزینی تگ ها
  • حذف کامنت ها (به جز کامنت های شرطی IE)

حتما در کنار این مطلب دانلود کنید: آموزش صفر تا صد برنامه نویسی (رایگان)

ابزارهای Regex

ابزارهای تصویرسازی regex یکی از جالبترین چیزهایی است که می توانید از آن استفاده کنید. اگر با یک regex پیچیده و طولانی روبرو شدید کافیست آن را کپی کرده و در یکی از این ابزارها قرار دهید تا بتوانید جریان را به خوبی مشاهده کنید.

علاوه بر این ابزارهای زیادی برای دستکاری و اصلاح عبارت های با قاعده وجود دارد. آنها همچنین خودشان نمونه هایی ارائه می دهند.

  • Debuggex: این ابزار یک نمودار regex را مطابق ورودی ترسیم می کند و می توانید از آنجا به سرعت در StackOverflow به اشتراک بگذارید.
  • RegExr: از ابزار RegExr می توانید برای تست regex خود استفاده کنید. همچنین نمونه هایی برای کمک و تمرین بیشتر به شما ارائه می دهد.

کاراکترها و قوانین Regex

تعریف

توکن

حداقل یکی از کاراکترهای a، b یا c

[abc]

هر کاراکتری غیر از a، b یا c

[^abc]

کاراکترهای بین a تا z

[a-z]

هر کاراکتری به غیر از کاراکترهای بین a تا z

[^a-z]

کاراکترهای بین A تا Z

[A-Z]

هر کاراکتری

.

کاراکتر فضای خالی یا فاصله

s

هر کاراکتری غیر از فضای خالی یا فاصله

S

اعداد بین 0 تا 9

d

هر کاراکتر غیر عددی

D

کاراکتر کلمه ای. کاراکتر از نوع عددی، حروف الفبا یا آندرلاین (_)

w

کاراکتر غیر کلمه ای. هر کاراکتری غیر از نوع عددی، حروف الفبا یا آندرلاین (_)

W

مجموعه و گروه بندی الگوها

(…)

تطبیق با a یا b

(a|b)

کاراکتر a یا نباشد یا یکبار باشد.

a?

کاراکتر a یا نباشد یا چند بار تکرار شده باشد.

a*

کاراکتر a حداقل یک بار تکرار شده باشد.

a+

کاراکتر a سه بار پشت سر هم تکرار شده باشد.

a{3}

کاراکتر a سه بار یا بیشتر پشت سر هم تکرار شده باشد.

a{3,}

کاراکتر a حداقل سه بار و حداکثر شش بار پشت سر هم تکرار شده باشد.

a{3,6}

نقطه شروع (با عبارت بعد از ^ شروع شود)

^

نقطه پایان رشته

$

مرز کلمه. کاراکتر آخر کلمه یا ابتدای کلمه باشد یا کاراکتر بین کاراکتر کلمه ای و غیر کلمه ای باشد.

b

در مرز کلمه نباشد.

B

حتما دانلود کنید: آموزش صفر تا صد Regex (رایگان)

profile name
تیم تولید محتوا

بخندید کتاب بخونید و خوب باشید تا جامعه مون به آرامش برسه. لطفا ! هر سوالی دارید در بخش نظرات مطرح کنید. ما یا سایر هموطنان عزیز پاسخ خواهیم داد. برای کمک به سایت ما و گسترش آموزش در بین هموطنان، در سایتها، وبلاگ ها و شبکه های اجتماعی لینک سایت ما را درج کنید.

مطالب پیشنهادی برای شما

محصولات مرتبط

مشاهده همه

کلاس های آنلاین مرتبط

مشاهده همه
سایر مقالات آموزشی
سایر مقالات آموزشی

مدرس : حامد رضوانی

0

*برای مشاهده قیمت کلاس روی رزرو کلاس آنلاین کلیک کنید*

رزرو کلاس آنلاین

دیدگاهتان را بنویسید

1 2 3 4 5

0 نظر درباره «regex چیست؟ تمرینات، ابزارها و قوانین آن که باید بدانید»

  • ناشناس
    ناشناس آیا این دیدگاه مفید بود ؟

    عالی

    پاسخ
مشاهده همه نظرات
سبد خرید
سبد خرید شما خالی است
× جهت نصب روی دکمه زیر در گوشی کلیک نمائید
آی او اس
سپس در مرحله بعد برروی دکمه "Add To Home Screen" کلیک نمائید