PHP – عبارات منظم (Regular Expressions)
عبارت منظم چیست؟ (What is a Regular Expression?)
عبارت منظم (regular expression) دنبالهای از کاراکترها است که یک الگوی جستجو را تشکیل میدهد. وقتی که در متنی به دنبال دادهای میگردید، میتوانید از این الگوی جستجو برای توصیف آنچه به دنبال آن هستید استفاده کنید. عبارات منظم میتوانند یک کاراکتر تکی یا یک الگوی پیچیدهتر باشند. عبارات منظم میتوانند برای انجام انواع عملیات جستجو و جایگزینی متن استفاده شوند.
سینتکس (Syntax)
در پیاچپی، عبارات منظم رشتههایی هستند که از جداکنندهها (delimiters)، الگو (pattern) و اصلاحکنندههای اختیاری (optional modifiers) تشکیل شدهاند.
$exp = "/w3schools/i";
در مثال بالا، /
جداکننده است، w3schools
الگویی است که به دنبال آن میگردیم، و i
اصلاحکنندهای است که جستجو را نسبت به حروف بزرگ و کوچک غیر حساس میکند (case-insensitive).
توابع عبارات منظم (Regular Expression Functions)
پیاچپی تعدادی توابع فراهم میکند که به شما امکان استفاده از عبارات منظم را میدهند. متداولترین این توابع عبارتند از:
preg_match()
: اگر الگو در رشته پیدا شود ۱ و در غیر این صورت ۰ را برمیگرداند.preg_match_all()
: تعداد دفعاتی که الگو در رشته پیدا شده را برمیگرداند.preg_replace()
: یک رشته جدید را برمیگرداند که الگوهای پیدا شده با رشته دیگری جایگزین شدهاند.
استفاده از preg_match()
تابع preg_match()
به شما میگوید آیا رشتهای با الگوهای مشخص شده مطابقت دارد یا خیر.
مثال
استفاده از عبارت منظم برای جستجوی غیر حساس به حروف بزرگ و کوچک برای “w3schools” در یک رشته:
$str = "Visit W3Schools";
$pattern = "/w3schools/i";
echo preg_match($pattern, $str);
استفاده از preg_match_all()
تابع preg_match_all()
به شما میگوید چند بار الگو در یک رشته پیدا شده است.
مثال
استفاده از یک عبارت منظم برای شمارش تعداد وقوع کلمه “ain” در یک رشته به صورت غیر حساس به حروف بزرگ و کوچک:
$str = "The rain in SPAIN falls mainly on the plains.";
$pattern = "/ain/i";
echo preg_match_all($pattern, $str);
استفاده از preg_replace()
تابع preg_replace()
تمام موارد مطابق با الگو را در یک رشته با رشته دیگری جایگزین میکند.
مثال
استفاده از یک عبارت منظم غیر حساس به حروف بزرگ و کوچک برای جایگزینی “Microsoft” با “W3Schools” در یک رشته:
$str = "Visit Microsoft!";
$pattern = "/microsoft/i";
echo preg_replace($pattern, "W3Schools", $str);
اصلاحکنندههای عبارات منظم (Regular Expression Modifiers)
اصلاحکنندهها میتوانند نحوه انجام جستجو را تغییر دهند.
i
: جستجوی غیر حساس به حروف بزرگ و کوچک انجام میدهد.m
: جستجوی چندخطی انجام میدهد.u
: تطابق صحیح الگوهای UTF-8 را فعال میکند.
الگوهای عبارات منظم (Regular Expression Patterns)
کروشهها (brackets) برای پیدا کردن محدودهای از کاراکترها استفاده میشوند:
[abc]
: یکی یا چند مورد از کاراکترهای داخل کروشه را پیدا میکند.[^abc]
: هر کاراکتری که بین کروشهها نباشد را پیدا میکند.[a-z]
: هر کاراکتر الفبایی بین دو حرف را پیدا میکند.[A-Z]
: هر کاراکتر الفبایی بین دو حرف بزرگ را پیدا میکند.[0-9]
: هر عددی را پیدا میکند.
متاکاراکترها (Metacharacters)
متاکاراکترها، کاراکترهایی با معنای ویژه هستند:
|
: هر یک از الگوهای جدا شده توسط | را پیدا میکند..
: هر کاراکتری را پیدا میکند.^
: تطابق در ابتدای رشته را پیدا میکند.$
: تطابق در انتهای رشته را پیدا میکند.d
: هر عددی را پیدا میکند.D
: هر کاراکتر غیرعددی را پیدا میکند.s
: هر کاراکتر فضای خالی را پیدا میکند.S
: هر کاراکتر غیر فضای خالی را پیدا میکند.w
: هر حرف الفبایی و عددی را پیدا میکند.W
: هر کاراکتر غیر الفبایی و غیر عددی را پیدا میکند.b
: تطابق در ابتدای یا انتهای کلمه را پیدا میکند.
کمیتها (Quantifiers)
کمیتها، تعداد تکرارهای یک الگو را مشخص میکنند:
n+
: هر رشتهای که حداقل یک n داشته باشد.n*
: هر رشتهای که صفر یا بیشتر n داشته باشد.n?
: هر رشتهای که صفر یا یک n داشته باشد.n{3}
: هر رشتهای که شامل دنبالهای از ۳ n باشد.n{2,5}
: هر رشتهای که شامل دنبالهای از حداقل ۲ و حداکثر ۵ n باشد.n{3,}
: هر رشتهای که شامل دنبالهای از حداقل ۳ n باشد.
گروهبندی (Grouping)
میتوانید از پرانتزها برای اعمال کمیتها به کل الگو استفاده کنید. همچنین میتوان از آنها برای انتخاب بخشهای خاصی از الگو استفاده کرد.
مثال
استفاده از گروهبندی برای جستجوی کلمه “banana” با جستجوی ba
که به دنبال آن دو بار na
آمده است:
$str = "Apples and bananas.";
$pattern = "/ba(na){2}/i";
echo preg_match($pattern, $str);
برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید. صفحه ورود و ثبت نام