آموزشبرنامه نویسیجاوامیم تک 5

Regex یا الگوی کلمات : آشنایی و بررسی

Regex یا الگوی کلمات : آشنایی و بررسی

آموزش تعریف الگوی کلمات ( Regex )

اگر می خواهید الگوی خاصی از کلمات را درون یک متن دنبال کنید و یا اگر می خواهید مقادیر ورودی از سوی کاربر ( به طور مثال پسورد ) الگوی خاصی داشته باشد و تا  الان با روش انجام آن آشنا نبوده اید، این مقاله برای شما نوشته شده است. در این مقاله درباره ی نحوه ی نوشتن Regular expression ،یا به اختصار regex صحبت خواهیم کرد. در واقع Regex به معنای یک الگوی خاص برای کاراکتر های درون یک متن می باشد.

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

 

مراحل نوشتن regex :

در ادامه به صورت گام به گام مراحل نوشتن regex را توضیح خواهیم داد.

Basic Character

در ابتدا باید با ساده ترین روش های تعریف یک الگو را آشنا شویم. در جداول زیر نمونه ای پایه از الگو ها آورده شده و در کنار آن توضیح دادیم چه کاراکتر هایی از فیلتر این الگو گذر خواهند کرد.


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

1- در مثال زیر نحوه ی نوشتن الگوی “پیدا کردن اعداد از 0 تا 9 در متن” و نتیجه ی آن را آورده ایم:

  • [regex : [0-9
  • G3 4 Opps9 0

2- regex زیر با قسمتی از متن تطبیق پیدا می کند که با b شروع شود ، به دنبال آن یکی از حروف a یا m بیاید ، و بعد از آن هر کاراکتری غیر از اعداد 0 و 4 باشد.

    • [regex :  b[am][^04
  • Ba8 bbm4ba7 nbkob
Multipliers

برای تعیین تعداد دفعات رخ دادن کاراکتر ها در این الگو ها ، نیاز به استفاده از علائم خاص داریم.

این علائم و معانی مربوط به آن ها در جدول زیر آورده شده است.

1- به طور مثال برای تایید اعتبار شماره موبایل ها می توان گفت ، ورودی هایی مورد پذیرش هستند که با 09  شروع شده و به دنبال آن نه عدد بین 0 تا 9  بیایند .

  • {regex : 09[0-9]{9
  • 09111234567 تایید می شود ولی 01112345678 به علت نداشتن 09 درآغاز و  0911123456   به علت کم تر بودن اعداد بعد از 09 رد می شوند .

2- در این مثال می خواهیم قسمتی از متن را که با b شروع شده و با b به پایان میرسد و بین این دو یکی یا بیشتر o دارد را پیدا کنیم.

  • regex : bo+b
  • By me BobobMo booobb
Shorthand Character

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

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

Boundaries

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

1–  به طور مثال regex آورده شده و نتیجه آن را در متن ببنید.

  • regex : \bt\w+\b
  • that‘s  test.
Java Example

جاوا  در پکیج   java.util.regex  کلاس های مربوط regular expression تعریف کرده است . از پر کاربرد ترین آنها کلاس Pattern و Matcher می باشد که در مثال های پایین از آنها استفاده شده است.

  • کلاس Pattern در واقع ورژن کامپایل شده از regex است .
  • کلاس Matcher مثل یک موتور جستجوی regex می باشد.

 

1-  این کد پیاده سازی مثال شماره موبایل می باشد.

با استفاده از کلاس Pattern و متد استاتیک matches  مطابق بودن شماره موبایل با الگوی تعریف شده برای آن را مورد بررسی قرار می دهد.

که حاصل اجرای کد زیر چاپ مقدار true است.

 

2-  کد پایین پیاده سازی یکی دیگر از مثال های ذکر شده است.

در این کد با استفاده از کلاس Pattern  و متد استاتیک compile از regex تعریف شده یک شی از کلاس Pattern  می سازیم.  در ادامه هم با استفاده از pattern ساخته شده و متن ورود ی یک شی از کلاس Matcher می سازیم. با استفاده از شی این کلاس و از استفاده از تابع find در حلقه ی تکرار تمام مقادیری درون متن که با regex تعریف شده مطابقت داشته باشند در خروجی چاپ می شوند .

2 دیدگاه

ارسال پاسخ