در حال بارگزاری ...

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

php
توسط مریم مهربان
آخرین به روز رسانی شنبه 16 آذر 1398

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

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

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

ساده‌ترین نوع عبارات منظم (regular expressions)، مطابقت با لیترال‌هاست. اگرچه این نوع عبارات بسیار ساده هستند، اما بسیار قدرتمند و کاربردی نیز به شمار می‌روند. برای نمونه، عبارت منظم زیر با عبارات لیترال مطابقت خواهد داشت: 

pattern : /yaba daba/

test : “I have no idea why I chose yaba daba in the regular expression pattern” 

کاراکترهای "/" نشان دهنده ابتدا و انتهای یک الگوی منظم است. در نمونه بالا، یک مطابقت وجود دارد اما با الگوی   /Yaba Daba/  ، به دلیل کوچکی و بزرگی حروف هیچ مطابقتی وجود ندارد.

کاراکترهای ابرداده

درعبارات منظم از کاراکترهای خاصی استفاده می‌شود که در جدول زیر آن‌ها را معرفی کردیم.

کاراکترهای متا

توضیح

  this is the escape character used for several things
^ refers to the start of the string
$ refers to the end of the string
. powerful match any character except newlines
[ begin a character class
] end a character class
| the pipe is for alternation – basically an ‘or’
( start a capture group
) end a capture group
? several uses – mostly with capture groups
* match zero or more
+ match 1 or more
{ begin a number range match
} end begin a number range match

کلاس کاراکترها در عبارات منظم

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

/{[a-z ]*}/

کاراکتر ] ، نشان دهنده تعریف بک مجموعه است، a-z با همه حروف الفبایی کوچک مطابقت دارد. سپس یک کاراکتر فاصله داریم و در نهایت، این مجموعه کاراکتر با ] بسته می‌شود.

کلاس کاراکترها در عبارات منظم

اعداد، کاراکترهای حرفی و فاصله

در عبارات منظم، کلاس‌هایی برای کاراکترهای عددی، حرفی و فاصله تعریف شده است که به ترتیب با d w و s می‌توانید به آن‌ها دسترسی پیدا کنید.

کلاسهای استاندار در عبارات منظم

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

در عبارات منظم، شما می‌توانید چند گزینه برای مطابقت انتخاب کنید. همانند برنامه نویسی که شروط را با متصل کننده or با هم ترکیب می‌کنیم، در عبارات منظم نیز می‌توانیم چندین عبارت را مشخص کنیم و در صورتی که هر یک از آن‌ها در عبارت مور تست وجود داشت، آن عبارت انتخاب شود. الگوی زیر با هر یک از عبارات "ha" ،"we" و "to" مطابقت پیدا می‌کند.

انتخاب چندین گزینه در عبارات منظم

کاراکتر دات و ستاره

کاراکتر . به معنی مطابقت با هر کاراکتر و * به معنی هر چند بار تکرار کاراکترهای موردنظر است. ترکیب این دو کاراکتر به صورت .* به این معنی است که هر کاراکتر و به هر تعداد می‌تواند تکرار شود. 

کاراکترهای دات و  ستاره

 مطابقت حریصانه

مفهوم انطباق حریصانه، به این معنی است که الگوی تعریف شده توسط شما با متن موردنظر مقایسه می‌شود و تمام بخش‌های منطبق شناسایی و گزارش می‌شوند.  برای مثال، \w رویکرد حریصانه دارد:

رویکرد حریصانه

این رویکرد در مقابل رویکرد تنبل قرار دارد. برای غیرفعال کردن رویکرد حریصانه، می‌توانید از کاراکتر ? به صورت   /w?/ استفاده کنید:

رویکرد تنبل عبارت منظم

جستجوهای رو به عقب و رو به جلو

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

 جستجوی رو به جلو مثبت

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

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

الگوی زیر، تنها دنباله‌های سه حرفی را پیدا می‌کند که پس از آن کاراکتر { وجود دارد. دقت کنید الگوی (?=) برای جستجو رو به جلو مثبت است.

جستجو رو به جلو مثبت

جستجوی رو به عقب مثبت

برای جستجوی رشته خاصی پیش از یک الگوی خاص از جستجو رو به عقب مثبت استفاده می‌شود. برای مثال، الگوی (?<={)[a-z]{2} ،تنها دنباله‌های دو حرفی را پیدا می‌کند که قبل از آن کاراکتر } قرار دارد.

جستجوی رو به جلو منفی

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

جسنجو رو به عقب منفیجستجوی رو به عقب منفی

نحو این نوع جستجو (?<!) است. این نحو به دنبال رشته‌هایی می‌گردد که با الگوی مشخص شده اول مطابقت داشته باشد و قبل از آن الگوی دوم وجود نداشته باشد.

مطالعه مقالات بیشتر در لیداوب:

عبارات منظم یا regular expressions، ابزار بسیار خوبی برای یافتن الگوهای خاصی در یک دنباله کاراکتر است. اگرچه ممکن است نوشتن الگوی درست، ابتدا کمی زمانبر به نظر برسد، اما پس از یافتن آن به سرعت می‌توانید به رشته‌های موردنظر خود دست پیدا کنید. با سایر مقالات ما در لیداوب همراه باشید.

دیدگاه ها

دیدگاه ها : 0


متاسفانه فقط اعضای سایت قادر به ثبت دیدگاه هستند

رایگان

اشتراک گذاری در
ثبت امتیاز
5 (1 رای)

   لطفا صبر کنید ...