Skip to content

ورقة غش التعبيرات النمطية (Regex)

مطابقة الأحرف

[abc] يطابق أي حرف واحد من بين a أو b أو c
[^abc] يطابق أي حرف ليس من بين a أو b أو c. يكون الرمز “^” فعالاً فقط إذا ظهر كأول حرف
[a-g] يطابق أي حرف واحد في النطاق a-g
[^a-g] يطابق أي حرف ليس في النطاق a-g
[H-N] يطابق أي حرف واحد في النطاق H-N
[0-9] يطابق أي حرف واحد في النطاق 0-9
[a-gH-N] يطابق أي حرف واحد في النطاقات a-g أو H-N
رموز البدل (Wildcards):
. [^\n\r]، يطابق أي حرف غير حرف سطر جديد
\s مسافة بيضاء: سطر جديد، علامة تبويب، مسافة، إلخ.
\S [^\s] (أي حرف ليس مسافة بيضاء)
\d رقم: [0-9]
\D [^\d] (أي حرف ليس رقماً)
\w حرف كلمة: [0-9A-Za-z_]
\W [^\w] (أي حرف ليس حرف كلمة)

مجموعات المطابقة

(a b)
(…) مجموعة التقاط
(?:…) مجموعة غير ملتقطة
(?<name>…) أو (?’name’…) مجموعة التقاط مسماة، يمكن تخصيص “name”
(?(condition)true_regex false_regex)

تُستخدم group(0) للحصول على سلسلة المطابقة الكاملة، بينما يمكن لـ group(>0) الحصول على مجموعات التقاط فرعية من النتيجة الكاملة.

ملاحظة: تتوفر مجموعات الالتقاط المسماة فقط بعد إصدار Java 1.7 (عن طريق تمرير السلسلة “name” كمعامل لطريقة group)، ولا تدعمها لغات JS و Python حالياً بشكل افتراضي.

نطاق التكرار (المكممات)

{3} يظهر العنصر السابق 3 مرات تماماً، وهو ما يعادل {3,3}
{3,6} يظهر العنصر السابق من 3 إلى 6 مرات
{3,} يظهر العنصر السابق 3 مرات على الأقل
{0,6} يظهر العنصر السابق 6 مرات على الأكثر
رموز البدل:
* {0,} (صفر أو أكثر)
+ {1,} (واحد أو أكثر)
? {0,1} (صفر أو واحد)
\w* الوضع الجشع (Greedy)
\w*? الوضع غير الجشع

المثبتات (Anchors)

^ بداية السلسلة
$ نهاية السلسلة
\b Boundary، حدود الكلمة
\B ليس حدود كلمة
تأكيدات الموقع (Lookaround):
(?=exp) تأكيد إيجابي أمامي (لاحقة exp)
(?<=exp) تأكيد إيجابي خلفي (بادئة exp)
(?!exp) تأكيد سلبي أمامي (بدون لاحقة exp)
(?<!exp) تأكيد سلبي خلفي (بدون بادئة exp)

\b(\w+)\b يعادل (?<=\W?)(\w+)(?=\W?)