التعبير العادي هو نمط حرفي يتكون من أحرف عادية (مثل الأحرف من من A إلى Z) والأحرف الخاصة (تسمى metacharacters ). يصف هذا النمط سلاسل أو أكثر من السلاسل المراد مطابقتها عند البحث عن جسم نص. يعمل التعبير العادي كقالب لمطابقة نمط الأحرف مع السلسلة التي تم بحثها.
فيما يلي بعض الأمثلة على التعبيرات العادية التي قد تواجهها:
| JScript | vbscript | مباراة |
|---|---|---|
| /^/[/t]*$/ | ^ /[ /t]*$ | تطابق خط فارغ. |
| // d {2}-/d {5}/ | /d {2}-/d {5} | تحقق من أن رقم المعرف يتكون من رقم 2 من أرقام ، ووصلة ، ورقم 5 أرقام. |
| /<(.*)> | <(.*)>.*</// 1> | تطابق علامة HTML. |
الجدول التالي هو قائمة كاملة من metacharacters وسلوكها في سياق التعبيرات العادية:
| شخصية | يصف |
|---|---|
| / | حدد الحرف التالي كشخصية خاصة ، أو شخصية بدائية ، أو مرجعًا للخلف ، أو شخصية هروب ثماني. على سبيل المثال ، 'n' يطابق الحرف n. '/n' يتطابق مع شخصية سطر جديد. التسلسل '//' تطابق /و /(المطابقات (. |
| ^ | يطابق موضع بدء سلسلة الإدخال. إذا تم تعيين الخاصية متعددة الأسلحة لكائن regexp ، فإن ^ يطابق أيضًا الموضع بعد '/n' أو '/r'. |
| $ | يطابق الموضع النهائي لسلسلة الإدخال. إذا تم تعيين خاصية متعددة الأسلحة لكائن RegexP ، فإن $ يطابق الموضع قبل "/n 'أو'/r '. |
| * | يتطابق مع التعبير الفرعي السابق صفر أو عدة مرات. على سبيل المثال ، يمكن لـ Zo* مطابقة Z و Zoo. * يعادل {0 ،}. |
| + | يطابق التعبير الفرعي السابق مرة أو أكثر. على سبيل المثال ، يمكن لـ "Zo+" مطابقة Zo و Zoo ، ولكن ليس z. + يعادل {1 ،}. |
| ؟ | يتطابق مع التعبير الفرعي السابق صفر أو مرة واحدة. على سبيل المثال ، هل (ES)؟ ؟ |
| { n } | N هو عدد صحيح غير سالب. تطابق الأوقات n التي يتم تحديدها. على سبيل المثال ، لا يمكن أن تتطابق مع "O {2}" في بوب ، ولكن يمكن أن تطابق اثنين من نظام التشغيل في الطعام. |
| { n ،} | N هو عدد صحيح غير سالب. تطابق على الأقل ن مرات. على سبيل المثال ، لا يمكن مطابقة "O {2 ،}" في "O" في Bob ، ولكن يمكن أن تتطابق مع كل نظام التشغيل في Fooooood. "O {1 ،}" يعادل "O+". 'o {0 ،}' يعادل 'o*'. |
| { n ، m } | كلا M و N من أعداد صحيحة غير سالبة ، حيث n <= m . تطابق على الأقل ن مرات وتطابق مع M Times. سيتطابق Liu ، O {1،3} مع أول ثلاثة نظام تشغيل في Fooooood. "O {0،1}" يعادل "O؟". يرجى ملاحظة أنه لا يمكن أن تكون هناك مسافات بين الفواصل والرقمين. |
| ؟ | نمط المطابقة غير معرض للعيدي عندما يتبع الحرف فورًا أي حرف تقييد آخر (*، +،؟ ، { n } ، { n ،} ، { n ، m }). يتطابق نمط غير غريدي مع عدد قليل من الأوتار ، في حين أن نمط الجشع الافتراضي يتطابق مع أكبر عدد ممكن من الأوتار. على سبيل المثال ، للسلسلة OOOO ، "O+؟" |
| . | تطابق أي حرف واحد باستثناء /ن. لمطابقة أي شخصيات بما في ذلك '/n' ، استخدم نمطًا مثل "./n] '. |
| ( نمط ) | نمط المباراة والحصول على هذه المباراة. يمكن الحصول على المباريات التي تم الحصول عليها من مجموعة Matches التي تم إنشاؤها ، وذلك باستخدام مجموعة Subscashes في VBScript ، واستخدام السمة $ 0 ... $ 9 في JScript. لمطابقة الشخصيات الأقواس ، استخدم '/(' أو '/)'. |
| (؟: نمط ) | نمط المطابقة ولكن لا تحصل على النتيجة المطابقة ، أي أن هذه مباراة غير محنة ولا يتم تخزينها للاستخدام في المستقبل. هذا مفيد عند استخدام أو أحرف (|) لدمج أجزاء مختلفة من النمط. على سبيل المثال ، "الصناعات (؟: y | ies) هو تعبير أبسط من" الصناعة | الصناعات ". |
| (؟ = نمط ) | إلى الأمام قبل الاختيار ، قم بمطابقة سلسلة البحث في بداية أي نمط مطابقة للسلسلة. هذه هي المباراة التي لا تحصل على ذلك ، أي أن المباراة لا تحتاج إلى استردادها للاستخدام لاحقًا. على سبيل المثال ، "Windows (؟ = 95 | 98 | NT | 2000)" يمكن أن تطابق Windows في Windows 2000 ، ولكن ليس Windows في Windows 3.1. لا تستهلك التفسير المسبق أحرفًا ، أي بعد حدوث تطابق ، يبدأ بحث المباراة التالية مباشرة بعد المباراة الأخيرة ، وليس بعد الشخصيات التي تحتوي على التحقيق المسبق. |
| (؟! نمط ) | تتطابق Lookahead السلبي مع سلسلة البحث في أي نقطة لا تتطابق فيها السلسلة. هذه هي المباراة التي لا تحصل على ذلك ، أي أن المباراة لا تحتاج إلى استردادها للاستخدام لاحقًا. على سبيل المثال ، "Windows (؟! 95 | 98 | NT | 2000) يمكن أن تطابق Windows في Windows 3.1 ، ولكن ليس Windows في Windows 2000. لا تستهلك التحقيق المسبق أحرفًا ، أي بعد حدوث تطابق ، يبدأ البحث في المباراة التالية مباشرة بعد المباراة الأخيرة ، وليس بعد الشخصيات التي تحتوي على التحقيق المسبق |
| س | | تطابق x أو y . على سبيل المثال ، يمكن "Z | Food" مطابقة Z أو الطعام. '(z | f) oood' تطابق zood أو الطعام. |
| [ XYZ ] | جمع الأحرف. تطابق أي شخصية موجودة. على سبيل المثال ، يمكن "[ABC]" مطابقة "A" في سهل. |
| [^ XYZ ] | مجموعة من أحرف القيم السلبية. تطابق أي شخصيات غير مدرجة. على سبيل المثال ، "[^ABC]" يمكن أن يتطابق مع "P" في عادي. |
| [ AZ ] | نطاق الأحرف. تطابق أي حرف في النطاق المحدد. على سبيل المثال ، يمكن "[AZ]" مطابقة أي أحرف أبجدية صغيرة في النطاق "A" إلى "z". |
| [^ AZ ] | نطاق حرف القيمة السلبي. تطابق أي شخصيات تعسفية ليست ضمن النطاق المحدد. على سبيل المثال ، يمكن أن تتطابق مع أي شخصيات تعسفية ليست في النطاق "A إلى" z ". |
| /ب | تطابق حدود كلمة ، مما يعني الموضع بين الكلمة والفضاء. على سبيل المثال ، يمكن أن تتطابق "ER/B" |
| /ب | تطابق الحدود غير الكلمة. يمكن أن تتطابق "ER/B" في الفعل ، ولكن لا يمكن أن تتطابق مع "ER" في عدم وجودها. |
| /C X. | يطابق أحرف التحكم المحددة بواسطة X. على سبيل المثال ، /سم يطابق عودة Control-M أو النقل. يجب أن تكون قيمة X من AZ أو AZ. خلاف ذلك ، تعامل C كحرف أصلي "C". |
| /د | تطابق شخصية رقمية. أي ما يعادل [0-9]. |
| /د | تطابق شخصية غير رقمية. أي ما يعادل [^0-9]. |
| /و | تطابق استراحة الصفحة. أي ما يعادل /x0c و /cl. |
| /ن | تطابق شخصية سطر جديد. أي ما يعادل /x0a و /cj. |
| /ص | تطابق شخصية عودة النقل. أي ما يعادل /x0d و /cm. |
| /ق | تطابق أي شخصيات من المساحة البيضاء ، بما في ذلك المساحات ، وعلامات التبويب ، وفواصل الصفحات ، إلخ. أي ما يعادل [/f/n/r/t/v]. |
| /ق | تطابق أي شخصيات غير واضحة. أي ما يعادل [^/f/n/r/t/v]. |
| /ر | تطابق شخصية علامة التبويب. أي ما يعادل /x09 و /ci. |
| /v | تطابق علامة تبويب عمودية. أي ما يعادل /x0b و /ck. |
| /ث | تطابق أي حرف كلمة يتضمن السطح السفلي. أي ما يعادل "[A-ZA-Z0-9_]". |
| /ث | تطابق أي شخصيات غير كلمة. أي ما يعادل '[^a-za-z0-9_]'. |
| /x ن | تطابق n ، حيث n هي قيمة الهروب سداسي عشري. يجب أن تكون قيمة الهروب سداسي عشرية طول رقمين يتم تحديدهما. على سبيل المثال ، "/x41" تطابق A. "/x041" يعادل '/x04' & 1. يمكن استخدام ترميز ASCII في التعبيرات العادية. . |
| / num | تطابق NUM ، حيث NUM هو عدد صحيح موجب. الإشارة إلى المباراة التي تم الحصول عليها. على سبيل المثال ، "(.)/1" يطابق اثنين من حرفين متتاليين متتاليين. |
| / ن | يحدد قيمة الهروب الثمانية أو مرجع متخلف. إذا تم الحصول على التعبيرات الفرعية على الأقل قبل / n ، فإن N هو مرجع متخلف. خلاف ذلك ، إذا كان N هو رقم ثماني (0-7) ، فإن N عبارة عن قيمة هروب ثماني. |
| / نانومتر | يحدد قيمة الهروب الثمانية أو مرجع متخلف. إذا كان ما لا يقل عن نانومتر الحصول على التعبيرات الفرعية يسبقه لا يقل عن نانومتر قبل / نانومتر ، فإن NM هو مرجع متخلف. إذا كان هناك ما لا يقل عن جلبات قبل / نانومتر ، فإن N هو مرجع متخلف يليه M الحرفي. إذا لم يتم استيفاء أي من الشروط السابقة ، إذا كان كلا من N و M هما أرقام ثماني (0-7) ، فسيتطابق مع / NM مع قيمة الهروب الثماني NM . |
| / NML | إذا كان N هو رقم ثماني (0-3) ، و M و L هما كلا من الأرقام الثمانية (0-7) ، يتم مطابقة قيمة الهروب الثماني NML. |
| /ش ن | المباراة n ، حيث n هي شخصية Unicode ممثلة بأربعة أرقام سداسية عشرية. على سبيل المثال ، /u00a9 يطابق رمز حقوق الطبع والنشر (؟). |
بعد إنشاء تعبير منتظم ، يمكنك تقييم مثل التعبير الرياضي ، أي يمكنك التقييم من اليسار إلى اليمين وبتطلب الأولوية.
يسرد الجدول التالي ترتيب أولوية لمشغلي التعبير العادية المختلفة من أعلى الأولوية إلى أدنى أولوية:
| المشغل | يصف |
|---|---|
| / | رمز الهروب |
| () ، (؟ :) ، (؟ =) ، [] | الأقواس والأقواس المربعة |
| *، +،؟ ، {n} ، {n ،} ، {n ، m} | التصفيات |
| ^، $ ، / anymetacharacter | الموقف والنظام |
| | | أو تعمل |