کلاس‌های کاراکتری (Character Classes)

کلاس‌های کاراکتری با استفاده از یک جفت براکت [] ایجاد می‌شوند. به عنوان مثال [abc] یک کلاس کاراکتری است. کلاس‌های کاراکتری با هرکدام از کاراکترهایی که در بین براکت ها قرار بگیرند، تطبیق می‌کنند. به عنوان مثال کلاس کاراکتری [abc] با هرکدام از کاراکترهای a یا b یا c تطبیق می‌کند.

یک کلاس کاراکتری را می‌توان منفی کرد! کلاس کاراکتری منفی شده با تمامی کاراکترها بجز کاراکترهایی که درون کلاس تعریف شده‌اند، تطبیق می‌کند. برای منفی کردن کلاس کاراکتری کافی است در ابتدی آن از علامت ^ استفاده نمود به عنوان مثال کلاس کاراکتری [abc^] با تمامی کاراکترها بجز کاراکترهای a یا b یا c تطبیق می‌کند. درون کلاس‌های کاراکتری با استفاده از علامت – (خط تیره) می‌توانید یک بازه‌ی کاراکتری ایجاد کنید. به عنوان مثلاً کلاس کاراکتری [9-0] با همه‌ی اعداد 0 و 1 و 2 و 3 تا 9 تطبیق می‌کند.

کلاس کاراکتری توضیحات
[abc] با هرکدام از کاراکترهای a , b و c تطبیق می‌کند.
[abc^] با همه‌ی کاراکترها بجز کاراکترهای a ,b و c تطبیق می‌کند.
[a-z] با همه‌ی کاراکترهای a تا z (حروف کوچک انگلیسی) تطبیق می‌کند.
[A-Z] با همه‌ی کاراکترهای A تا Z (حروف بزرگ انگلیسی) تطبیق می‌کند.
[a-Z] با همه‌ی کاراکترهای از a تا Z (حرف a کوچک تا Z بزرگ) تطبیق می‌کند.
[0-9] با اعداد از 0 تا 9 تطبیق می‌کند.
[a-z0-9] با حروف انگلیسی a تا z و اعداد از 0 تا 9 تطبیق می‌کند.

کلاس‌های کاراکتر از پیش تعریف شده

بعضی از کلاس‌های کاراکتر مانند اعداد، کاراکترها و فظاهای خالی (space) که مرتباً مورد استفاده قرارمی گیرند به صورت پیش فرض تعریف و قواعدی برای آنها در نظر گرفته شده است که به صورت زیر هستند :

کلاس کاراکتر توضیحات
. با همه‌ی کاراکترها، بجز کاراکتر خط جدید (n\) تطبیق می‌کند.
d\ با اعداد تطبیق می‌کند و با کلاس کاراکتر [9-0] یکسان است
D\ با همه‌ی کاراکترها بجز اعداد تطبیق می‌کند و با کلاس کاراکتر [9-0^] یکسان است
s\ با کاراکترهای فضای خالی (space) تطبیق می‌کند و برابر کلاس کاراکتری [ \t\n\r] است
S\ با کاراکترهای غیر فضای خالی تطبیق می‌کند و با کلاس کاراکتری [^ \t\n\r] یکسان است
w\ با کاراکترهای لغوی (اعداد و حروف انگلیسی و کاراکتر _) تطبیق می‌کند و با کلاس کاراکتری [a-zA-Z_0-9] یکسان است
W\ با همه‌ی کاراکترهای غیر لغوی تطبیق می‌کند و با کلاس کاراکتری [^a-zA-Z_0-9] برابر است.

مثال های از کلاس‌های کاراکتری

برای آشنایی بیشتر با نحوه استفاده از کلاس‌های کاراکتری، به مثال زیر توجه کنید :

 1: <?php
 2:     $pattern = "/[a]/";
 3:     $text = "He was eating cake in the cafe at 7:30.";
 4:     $replacement = "<b>$0</b>";
 5:     
 6:     echo preg_replace($pattern, $replacement, $text);    
 7: ?>

در کد بالا الگوی [a] همه حروف a موجود در جمله را انتخاب می کند:

$pattern = "/[a]/";

در مثال های زیر، شما کافیست که فقط الگوها را جایگزین الگوی خط 2 کرده و سپس کد را اجرا و نتیجه را مشاهده کنید. الگوی زیر همه حروف، بجز حرف a را در جمله، انتخاب می کند:

$pattern = "/[^a]/";

الگوی زیر همه حروف a و e موجود در جمله را انتخاب می کند:

$pattern = "/[ae]/"

الگوی زیر همه حروف از a تا g موجود در جمله را انتخاب می کند:

$pattern = "/[a-g]/";

الگوی زیر همه حروف a و اعداد 3 موجود در جمله را انتخاب می کند:

$pattern = "/[a3]/";

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

$pattern = "/\./";

الگوی زیر همه کاراکترهای موجود در جمله بجز n\ را انتخاب می کند (برای درک بهتر عملکر این الگو در آخر خط 3 عبارت n\ را اضافه کنید):

$pattern = "/./";

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

$pattern = "/\d/";

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

$pattern = "/\D/";

الگوی زیر همه فاصله های موجود در جمله را انتخاب می کند (برای درک بهتر عملکرد این الگو کافیست که همه فاصله ها را با کاراکتر خط تیره (-) جایگزین کنید. خط 4 کد را موقتا به صورت $replacement = “-“; تغییر داده و برنامه را اجرا کنید):

$pattern = "/\s/";

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

$pattern = "/\S/";

الگوی زیر همه کاراکترهای عددی، حرفی و کاراکتر زیر خط (_) موجود در جمله را انتخاب می کند:

$pattern = "/\w/";

الگوی زیر بر خلاف الگوی بالا عمل می کند و کاراکترهایی مانند خط تیره (-)، فاصله، @ و … را انتخاب می کند:

$pattern = "/\W/";