ورقة غش التعبيرات النمطية (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?)