عبارات منظم (Regular Expressions)

عبارات منظم یا Regular Expressions

گاهی ممکنه که از کاربر بخواهید در برنامه یک متن به صورت یک قالب استاندارد وارد شود و در صورت اشتباه به کاربر پیام اخطار بدهد. برای مثال عبارات ایمیل ، تاریخ یا شماره تلفن می بایست با قالب مشخص خود وارد سیستم شوند تا بعداً دچار مشکل نشویم. راه حل این گونه مشکلات استفاده از عبارات منظم یا Regular Expressions است.

کتابخانه java.util.regex شامل سه کلاس زیر است :

  • Pattern : یک عبارت منظم یا الگو به این کلاس داده میشود که جهت کامپایل می بایست از متد compile اون استفاده کنید.
  • Matcher : الگو را با رشته ورودی تطبیق میدهد که می بایست توسط متد matcher کلاس Pattern به شی کلاس Matcher داده شود.
  • PatternSyntaxException : خطاهای نحوی درون الگوی Regular Expressions را مشخص میکند.

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

((a)((b)(cd)))

که شامل  ۵ گروه زیر است :

(a) , (b) , (cd) , ((b)(cd)) , ((a)((b)(cd)))

نحوه استفاده از کلاس های بالا را می توانید در کد زیر ببینید :

و خروجی برنامه :
در جدول زیر تمام عبارات کنترلی جهت استفاده در الگوها لیست شده است :

کارکتر یا عبارت تفسیر آنها در یک الگو
^ Matches the beginning of the line.
$ Matches the end of the line.
. Matches any single character except newline. Using m option allows it to match the newline as well.
[…] Matches any single character in brackets.
[^…] Matches any single character not in brackets.
\A Beginning of the entire string.
\z End of the entire string.
\Z End of the entire string except allowable final line terminator.
re* Matches 0 or more occurrences of the preceding expression.
re+ Matches 1 or more of the previous thing.
re? Matches 0 or 1 occurrence of the preceding expression.
re{ n} Matches exactly n number of occurrences of the preceding expression.
re{ n,} Matches n or more occurrences of the preceding expression.
re{ n, m} Matches at least n and at most m occurrences of the preceding expression.
a| b Matches either a or b.
(re) Groups regular expressions and remembers the matched text.
(?: re) Groups regular expressions without remembering the matched text.
(?> re) Matches the independent pattern without backtracking.
\w Matches the word characters.
\W Matches the nonword characters.
\s Matches the whitespace. Equivalent to [\t\n\r\f].
\S Matches the nonwhitespace.
\d Matches the digits. Equivalent to [0-9].
\D Matches the nondigits.
\A Matches the beginning of the string.
\Z Matches the end of the string. If a newline exists, it matches just before newline.
\z Matches the end of the string.
\G Matches the point where the last match finished.
\n Back-reference to capture group number “n”.
\b Matches the word boundaries when outside the brackets. Matches the backspace (0x08) when inside the brackets.
\B Matches the nonword boundaries.
\n, \t, etc. Matches newlines, carriage returns, tabs, etc.
\Q Escape (quote) all characters up to \E.
\E Ends quoting begun with \Q.

متدهای start و end

در مثال زیر تعداد دفعاتی که کلمه cat در متن ورودی آمده و شروع و پایان آن را نیز مشخص می کند :

و خروجی آن :

متدهای matches و lookingAt  :

  • متد lookingAt مشخص می کند که الگوی مورد نظر در ابتدای متن وجود دارد یا خیر .
  • متد matches کل متن را با کل الگو تطبیق میدهد و اگر درست بود مقدار true را برمیگرداند.

کاربرد هر دو متد را می توانید در مثال زیر ببینید :

و خروجی آن :

متدهای replaceFirst و replaceAll :

متد replaceFirst : رشته انتخابی را می گیرد و هر جا که اولین الگو پیدا شد آن را با رشته انتخابی جایگذاری می کند.

متد replaceAll : رشته انتخابی را می گیرد و هر جا که الگو پیدا شد آن را با رشته انتخابی جایگذاری می کند.

مثال زیر را جهت کاربرد این متدها ببینید :

خروجی آن :

متدهای appendReplacement و appendTail :

متدهای بالا نیز جایگذاری متن انتخابی با الگو تطبیق داده شده در متن را انجام می دهد. مثال زیر را جهت کاربرد متدها ببینید :

خروجی آن :

متدهای کلاس PatternSyntaxException

ردیف متد و توضیحات
۱

public String getDescription()

بازیابی شرح خطا صورت گرفته

۲

public int getIndex()

بازیابی شاخص خطا

۳

public String getPattern()

بازیابی خطا در الگو عبارت منظم

۴

public String getMessage()

بازیابی شرح خطا ، شاخص و خطا در الگو همراه با یک نشانه بصری (شرح کلی خطا)

 

 

اشتراک گذاری :
آموزش برنامه نویسی آموزش جاوا

درباره حسین رسولی

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

دیدگاه خود را بیان کنید

از ما حمایت کنید