تعداد بازدید: 116

عبارات منظم RegularExpression

در این قسمت قصدداریم تا با یکی از مباحث پیشرفته یعنی عبارات منظم یا عبارات باقاعده (regular expression) آشنا بشیم. کاربرد عبارت منظم برای تشخیص متن از روی الگوست به طوری که اگر متن با الگو تطابق داشته باشد مقدار یک برمی گرداند و اگر متن با الگو تطابق نداشته باشد مقدار صفر را بر می گرداند. عبارات منظم در برنامه نویسی پیشرفته بسیار کاربرد دارد.

کاربردهای عبارات منظم (regular expression)

  • تشخیص عبارت خاص در رشته : فرض کنید شما یک رشته حاوی آدرس یک عکس رو دارید و می خواهید که فرمت تصویر رو تشخیص بدید .
  • اعتبار سنجی ایمیل ها در فرم های ثبت نام
  • تشخیص امن بودن رمز انتخابی توسط کاربر در فرم های ثبت نام
  • موتورهای جستجو گر
  • گشت زدن در یک صفحه اینترنتی و پیدا کردن المنت خاص. (بی شباهت به مورد بالا نیست).

ساختار عبارات منظم (regular expression)

ساختار کلی عبارات منظم از دو قسمت pattern و flag تشگیل شده که توسط delimiter از هم جدا می شوند:

regex = ‘/pattern/flag’

استفاده از عبارات منظم در PHP

ما برای عملیات مقایسه pattern و string از تابع preg_match() استفاده می کنیم.

  • pattern : الگوی کامل عبارت باقاعده
  • matches : رشته ای که قراره مقایسه در اون انجام بشه.

خروجی این تابع با توجه به این که الگو درست است یا خیر صفر یا یک است .

متا کاراکتر ها (RegularExpression) در عبارات منظم

ما می تونیم تا کاراکتر های معمولی رو در الگوی خودمون قرار بدیم و همچنین کاراکتر های خاص الگوی (a|b)r توجه کنید.

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

  • قسمت اول کاراکتر های مشخص هستند که باید مستقیما استفاده شده باشند . در اینجا کاراکتر r
  • قسمت دوم متا کاراکتر هست که عملیات خاصی رو روی کاراکتر های اطرافش انجام میده . در اینجا کاراکتر | که عملیات OR رو روی کاراکتر های a و b انجام میده.

کاراکتر نقطه .

با هر کاراکتری (به تعداد خودش) غیر از کاراکتر خط جدید مطابقت می کنه.

نکته : اگر منظور شما به طور دقیق کاراکتر نقطه باشد باید قبل از آن \ قرار دهید.

کاراکتر پایپ |

این کاراکتر معنی OR رو برای ما داره . این عملیات بین کاراکتر های سمت چپ و راست اتفاق می افته.

کاراکتر بعلاوه +

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

کاراکتر ستاره *

با هر تعداد (صفر یا بیشتر) از کاراکتر قبل خودش مطابقت می کنه.

کاراکتر علامت سوال ?

با حداکثر یک کاراکتر مطابقت (از کاراکتر قبل خودش) مطابقت می کنه (صفر یا یک).

کاراکتر آکولاد { }

در داخل آکولاد می تواند تعداد کاراکتر (عبارت قبل از آن) مشخص شود.

  • اگر ساختار آکولاد به شکل {x,} باشد به معنی تعداد x یا بیشتر خواهد بود.

  • اگر ساختار آکولاد به شکل {x,y} باشد به معنی حداقل x و حداکثر y خواهد بود.

نکته : دقت داشته باشید مواردی که گفته شد ممکنه که قبل از اون یک کاراکتر باشه یا یه الگوی خاص یا گروهی از کاراکتر ها مثلا (a[-z]) این مورد شامل پرانتز و براکت میشه که در ادامه به توضیح اون می پردازیم.

کاراکتر پرانتز ( )

از کاراکتر پرانتز به منظور گروه بندی کاراکتر ها استفاده میشه .

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

کاراکتر براکت [ ]

در داخل براکت می توان بازه از کاراکتر تعریف کرد.

اگر تعداد آن در بعد تعریف شده باشد (مثلا توسط + یا * یا ? ) باید از آن قانون پیروی کند و اگر تعریف نشده باشد به معنی این که حتما یکی از کاراکتر ها وجود داشته باشد.

  • در داخل براکت می توان بازه از کاراکتر ها رو تعریف کرد. این بازه می تونه به صورت از یک کاراکتر تا کاراکتر دیگر تعریف کردکه به صورت زیر تعریف میشود.
    [a-d] که به معنی از کاراکتر a تا کاراکتر d که شامل a,b,c,d می باشد.
    [0-5] که به معنی از عدد 0 تا 5 که شامل 0,1,2,3,4,5 می باشد.

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

الگو توضیحات اختصار
[a-z] تمامی حروف کوچک
[A-Z] تمامی حروف بزرگ
[0-9] تمامی اعداد \d
[a-zA-z0-9] تمامی حروف کوچک و بزرگ و اعداد \w

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

  • متا کاراکتر هایی که تا به الان گفتیم در داخل براکت معنی خود را از دست می دهند . به طور مثال ( + , * , ?).

کاراکتر ^

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

استفاده از ^ در داخل براکت

استفاده از ^ در داخل براکت به معنی متمم مجموعه است ، یعنی هر آنچه که در داخل مجموعه نیست.

نکته : اگر بخواهید از خود کاراکتر ^ در داخل براکت استفاده کنید باید قبل از آن \ قرار دهید.

کاراکتر $

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

نکته : اگر بخواهید از خود متا کاراکترها ( + , * , . ) در pattern خودتون استفاده کنید باید قبل از اون ها \ قرار بدید.

flag ها

  • i : این فلگ به منظور اعمال pattern به صورت case insetive می باشد.

 

مطالب مشابه

کار با تاریخ و زمان در php

تاریخ و زمان در php

در ابتدا به دو مفهوم مهم در تاریخ و زمان در زبان پی اچ پی اشاره می کنیم : Greenwich Mean Time (GMT) زمان گرینویچ یا...

کوکی ها و نشست ها و راه های ذخیره سازی داده د ر php

Cookie و Session در php

زمانی که بحث ذخیره اطلاعات که مطرح میشه ما امکاناتی برای ذخیره اطلاعاتمون داریم: پایگاه داده (DataBase) فایل ها...

امنیت و رمزنگاری در پی اچ پی

امنیت و رمزنگاری در php

امنیت و رمز نگاری دو مبحث مهم در برنامه ها به شمار میره. به طور کلی ما باید برای حفاظت باید برنامه هامون در برابر حملات...

اشتراک گذاری :

ابوالفضل صباغ

برنامه نویسی رو با زبان C در هفده سالگی شروع کردم . در حال حاضر به برنامه نویسی php برپایه معماری MVC , HMVC و همچنین سیستم مدیریت محتوای WordPress علاقه مند هستم و دوست دارم اطلاعاتم رو با شما به اشتراک بگذارم.

۰ دیدگاه برای عبارات منظم RegularExpression

پاسخ دهید

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