قالب وردپرس افزونه وردپرس
خانه / عبارت با قاعده / آموزش عبارات با قاعده یا regular expression در زبان فارسی

آموزش عبارات با قاعده یا regular expression در زبان فارسی

Regular Expressions در واقع زبانی است جهت شناسایی الگوها در رشته ها . عبارات با قاعده جهت تحلیل رشته ها ، جداسازی زیر رشته ها ، جایگزینی زیررشته ها با یک الگوی مشخص ، تعیین وجود و یا عدم وجود زیررشته با الگوی مشخص در یک رشته و … می باشد.

عبارات با قاعده، الگوهای متنی هستند که تصمیم می گیرند فرم و شکل یک رشته متنی به چه شکل باشد. اگر به درستی از آن استفاده کنیم می توانیم به راحتی مسائل زیر را مدیریت کنیم:

  • چک کردن اینکه ورودی تایپ شده توسط کاربر از یک الگوی خاص تبعیت می کند. مثلا آیا رشته وارد شده به عنوان ایمیل، ساختار درستی دارد یا خیر.
  • جستجو برای وقوع یک الگوی خاص در میان یک متن. مثلا چک کردن اینکه آیا کلمه “میگویم” یا “می گویم” در متن یافت می شود یا خیر (با یک اسکن)
  • استخراج بخش های خاصی از متن، مثلا استخراج کد پستی از یک آدرس
  • جایگزینی بخش هایی از متن، مثلا اگر در جایی از متن کلمه “رنگ” آورده شده بود، آن را با “قرمز” جایگزین کن.
  • تقسیم کردن یک متن بزرگ به بخش های کوچکتر، مثلا جداسازی متن در جایی که نقطه، کاما، یا اینتر زده شده.

سینتکس عبارات با قاعده

یک برنامه نویس یا توسعه دهنده ی باتجربه مطمئنا به یک نحوی از عبارت با قاعده استفاده کرده است. مثلا در کنسول سیستم عامل، اغلب برای یافتن فایل ها از علامت ستاره (*) یا علامت سوال (؟) استفاده می شود.

علامت سوال یک کاراکتر یکتا را تطبیق می دهد. مثلا الگوی زیر را در نظر بگیرید:

file?.xml

این الگو، file1.xml ،  file2.xml و file3.xml را پیدا می کند اما file99.xml را پیدا نمی کند. (چون فقط یک کاراکتر باید جایگزین علامت سوال شود نه دو کاراکتر). به عبارت دیگر این الگو می گوید رشته هایی را تطبیق بده که با لغت file شروع می شوند، و بعد از آن فقط یک کاراکتر دیگر بیاید (هر مقداری می تواند داشته باشد)، و بعد با لغت xml خاتمه پیدا کند. در مثال بالا می توانیم دو نوع کامپوننت مختلف پیدا کنیم: یکی literal ها (مثل file و .xml) و دیگری metacharacters (مثل * یا ؟).

بیایید با هم اولین عبارت باقاعده مان را بررسی کنیم:

این عبارت هر کلمه که با

 –>a

شروع می شود را شناسایی می کند:

نکته: در این مقاله، عبارات با قاعده با علامت / نشان داده می شوند (البته خارج از کد و در بخش توضیحات) همچنین چون نشان دادن فاصله در اینجا کمی سخت است و ممکن است به اشتباه بیفتید، فاصله را با علامت <– نشان میدهیم (البته مجددا تاکید می کنم خارج از کد). 

مجموعه ای از کاراکترها Character Class

character class ها کمک می کنند تا بتوانیم مجموعه ای از کاراکترها را برای تطبیق بررسی کنیم. برای تعریف character class هم خیلی ساده از براکت [] استفاده می کنیم. مثلا بیاییم یک عبارت باقاعده برای تطبیق کلمه “license” در انگلیسی آمریکایی و انگلیسی بریتانیایی تعریف کنیم:

حتی می توان یک محدوده از کاراکترها تعریف کرد. چگونه؟ با استفاده از سمبل (-) بین دو کاراکتر. ببینید مثلا برای تطبیق حروف کوچک (در انگلیسی) باید به صورت[a-z] تعریف کنیم. یا برای تطبیق تک رقم باید به صورت [0-9] تعریف کنیم. در زبان فارسی برای تطبیق حروف فارسی می توان از [ا-ی] استفاده کرد. می توانید در این لینک، دموی آن را ببینید.

حتی می توان این محدوده ها را با هم ترکیب کرد تا یک کاراکتر را با محدوده های دیگر تطبق داد. مثلا اگر بخواهیم کاراکتر حروف کوچک یا حروف بزرگ و عدد و الفبا را تطبیق بدهیم می توانیم عبارت باقاعده را به شکل زیر بنویسیم:

توضیح این عبارت در جدول زیر مشخص است:

 جدول زیر یک سری از character class های پیشفرضی که در زبان پایتون تعریف شده اند را نشان می دهد:

مثال: عبارت باقاعده ای تولید کنید که سه کاراکتر (به جز خط جدید یا اینتر) را تطبیق دهد. (نوع کاراکتر مهم نیست می تواند هر چیزی باشد).

جواب: 

/…/

عبارت با قاعده معادل OR

 فرض کنیم می خواهیم یکی از دو کلمه “yes” یا “no” را تطبیق دهیم. عبارت باقاعده ی ما به شکل زیر نوشته می شود:

/yes|no/

یعنی اگر یکی از دو کلمه “yes” یا “no” در متن پیدا شد برای ما کافیه. اگر نیاز باشد بیشتر از دو کلمه را جستجو کنیم:

/yes|no|maybe/

سایت خوب برای پردازش آنلاین عبارت با قاعده

سایت regex101  یک محیط عالی برای تست کردن عبارت های با قاعده در اختیار شما قرار می دهد. رابط کاربری آن بسیار ساده است و کارکردن با آن لذت بخش. بهتر است نگاهی به آن بیندازید. 

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

 

[python] import re [/python]

 

 

درباره ی admin

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *