يصف التعبير العادي (التعبير العادي) نمط مطابقة السلسلة، والذي يمكن استخدامه للتحقق مما إذا كانت السلسلة تحتوي على سلسلة فرعية معينة، أو استبدال السلسلة الفرعية المطابقة، أو استخراج سلسلة فرعية تلبي شرطًا معينًا من سلسلة انتظار معينة.
تعد وظيفة التعبير العادي للغة Perl قوية جدًا، وهي في الأساس الأقوى بين اللغات شائعة الاستخدام، حيث تشير العديد من اللغات إلى تعبيرات Perl العادية عند تصميم دعم التعبير العادي.
الأشكال الثلاثة للتعبيرات العادية لـ Perl هي المطابقة والاستبدال والتحويل:
المباراة: م/
الاستبدال: ق/
التحويل: تر/
تُستخدم هذه الأشكال الثلاثة عمومًا مع =~ أو !~ ، =~ تعني المطابقة، !~ تعني عدم المطابقة.
يتم استخدام عامل التشغيل المطابق m// لمطابقة عبارة سلسلة أو تعبير عادي، على سبيل المثال، لمطابقة "تشغيل" في شريط $ العددي، يكون الرمز كما يلي:
بتنفيذ البرنامج أعلاه تكون نتيجة الإخراج هي:
المباراة الأولى المباراة الثانية
تحتوي مطابقة الأنماط على بعض المعدلات شائعة الاستخدام، كما هو موضح في الجدول التالي:
معدل | يصف |
---|---|
أنا | تجاهل الحالة في النمط |
م | وضع متعدد الخطوط |
س | تعيين القيمة مرة واحدة فقط |
ق | وضع السطر المفرد، "." يطابق "n" (الافتراضي لا يطابق) |
س | تجاهل المسافة البيضاء في النمط |
ز | مباراة عالمية |
الفريق الاستشاري | بعد فشل المطابقة العامة، يُسمح بالبحث عن السلسلة المطابقة مرة أخرى. |
بعد معالجة لغة Perl، سيكون هناك ثلاثة أسماء متغيرات خاصة للقيم المطابقة:
$`: الجزء السابق من السلسلة المطابقة
$&: سلسلة مطابقة
$': لا توجد سلاسل متبقية متطابقة حتى الآن
إذا قمت بتجميع هذه المتغيرات الثلاثة معًا، فستحصل على السلسلة الأصلية.
الأمثلة هي كما يلي:
نتيجة الإخراج لتنفيذ البرنامج أعلاه هي:
السلسلة قبل المطابقة: مرحبًا بك في السلسلة قبل المطابقة: تشغيل السلسلة بعد المطابقة: موقع oob.
عامل التشغيل البديل s/// هو امتداد لعامل التشغيل المطابق ويستبدل السلسلة المحددة بسلسلة جديدة. التنسيق الأساسي هو كما يلي:
s/PATTERN/REPLACEMENT/;
PATTERN هو النمط المطابق، وREPLACEMENT هي السلسلة البديلة.
على سبيل المثال، نستبدل "google" في السلسلة التالية بـ "codercto":
نتيجة الإخراج لتنفيذ البرنامج أعلاه هي:
مرحبا بكم في موقع كوديرتو.
يتم عرض معدّلات عملية الاستبدال في الجدول التالي:
معدل | يصف |
---|---|
أنا | إذا تمت إضافة "i" إلى المُعدِّل، فسيؤدي التعبير العادي إلى إلغاء حساسية حالة الأحرف، أي أن "a" و"A" متماثلان. |
م | البداية العادية الافتراضية "^" والنهاية "$" مخصصة فقط للسلاسل العادية إذا تمت إضافة "m" إلى المُعدِّل، فستشير البداية والنهاية إلى كل سطر من السلسلة: بداية كل سطر هي "^". "، وينتهي بـ "$". |
س | يتم تنفيذ التعبير مرة واحدة فقط. |
ق | إذا تمت إضافة "s" إلى المُعدِّل، فإن الحرف الافتراضي "." الذي يمثل أي حرف بخلاف حرف السطر الجديد سيصبح أي حرف، بما في ذلك حرف السطر الجديد! |
س | إذا تمت إضافة هذا المعدل، فسيتم تجاهل أحرف المسافات البيضاء في التعبير ما لم يتم تجاوزها. |
ز | استبدال كافة السلاسل المطابقة. |
ه | استبدال السلسلة كتعبير |
فيما يلي المعدلات المتعلقة بعامل التحويل:
معدل | يصف |
---|---|
ج | تحويل كافة الأحرف غير المحددة |
د | حذف كافة الأحرف المحددة |
ق | تكثيف عدة أحرف إخراج متطابقة في حرف واحد |
المثال التالي يحول كافة الأحرف الصغيرة في المتغير $string إلى أحرف كبيرة:
#!/usr/bin/Perl $string = 'مرحباً بكم في موقع codercto.';$string =~ tr/az/Az/;print "$stringn";
نتيجة الإخراج لتنفيذ البرنامج أعلاه هي:
مرحبا بكم في موقع كوديركتو.
يستخدم المثال التالي /s لإزالة الأحرف المتكررة من المتغير $string:
نتيجة الإخراج لتنفيذ البرنامج أعلاه هي:
runob
المزيد من الأمثلة:
$string =~ tr/d/ /c; # استبدل جميع الأحرف غير الرقمية بمسافات $string =~ tr/t //d; # حذف علامات التبويب والمسافات $string =~ tr/0-9/ /cs # استبدال الأحرف الأخرى بين الأرقام بمسافة.
تعبير | يصف |
---|---|
. | يطابق جميع الأحرف باستثناء أحرف السطر الجديد |
س؟ | تطابق سلسلة x 0 أو مرة واحدة |
س* | قم بمطابقة السلسلة x 0 مرة أو أكثر، ولكن قم بمطابقة أقل عدد ممكن من المرات |
س+ | قم بمطابقة السلسلة x مرة واحدة أو أكثر، ولكن قم بمطابقة أقل عدد ممكن من المرات |
.* | يطابق أي حرف 0 مرة أو أكثر |
.+ | قم بمطابقة أي شخصية مرة واحدة أو أكثر |
{م} | يتطابق تمامًا مع السلاسل المحددة |
{م،ن} | يطابق أكثر من m وأقل من n من السلاسل المحددة |
{م،} | تطابق م أو أكثر من السلاسل المحددة |
[] | يطابق الأحرف داخل [] |
[^] | يطابق الأحرف التي لا تتطابق مع [] |
[0-9] | يطابق كافة الأحرف الرقمية |
[من الألف إلى الياء] | يطابق كافة الأحرف الأبجدية الصغيرة |
[^0-9] | يطابق كافة الأحرف غير الرقمية |
[^أز] | يطابق جميع الأحرف الأبجدية غير الصغيرة |
^ | يطابق الأحرف التي تبدأ بـ |
$ | يطابق الحرف الموجود في نهاية الحرف |
د | يطابق حرفًا رقميًا، وهو نفس بناء الجملة مثل [0-9] |
د+ | يطابق عدة سلاسل رقمية، بنفس بناء الجملة [0-9]+ |
د | غير رقم، مثل الآخرينd |
د+ | غير رقم، مثل d+ للآخرين |
ث | سلسلة من الحروف أو الأرقام الإنجليزية، بنفس بناء الجملة مثل [a-zA-Z0-9_] |
ث+ | نفس بناء الجملة مثل [a-zA-Z0-9_]+ |
W | سلسلة من الأحرف أو الأرقام غير الإنجليزية، بنفس بناء الجملة مثل [^a-zA-Z0-9_] |
W+ | نفس بناء الجملة مثل [^a-zA-Z0-9_]+ |
س | المسافة، نفس بناء الجملة مثل [ntrf] |
س+ | نفس [ntrf]+ |
س | بدون مسافة، نفس بناء الجملة مثل [^ntrf] |
س+ | نفس بناء الجملة مثل [^ntrf]+ |
ب | تطابق السلاسل التي تحدها الحروف والأرقام الإنجليزية |
ب | يطابق السلاسل التي لا يحدها حروف إنجليزية أو قيم رقمية |
أ|ب|ج | يطابق السلاسل التي تتطابق مع حرف أو حرف b أو حرف c |
اي بي سي | مطابقة السلسلة (النمط) التي تحتوي على abc () سيتذكر هذا الرمز السلسلة التي تم العثور عليها، وهي صيغة عملية للغاية، حيث تصبح السلسلة الموجودة في الأول () المتغير $1 أو المتغير 1، والسلسلة الموجودة في الثانية (). يصبح المتغير $2 أو المتغير 2، وهكذا. |
/نمط/أنا | i تعني هذه المعلمة تجاهل حالة الأحرف الإنجليزية، أي أنه عند مطابقة السلاسل، لا يتم أخذ مشكلة حالة الأحرف الإنجليزية في الاعتبار. إذا كنت تريد العثور على حرف خاص في وضع النمط، مثل "*"، فأنت بحاجة إلى إضافته قبل هذا الحرف استخدم الرمز لإبطال الأحرف الخاصة. |