التعبير العادي (regex) هو سلسلة من الأحرف التي تحدد نمط البحث. وإليك كيفية كتابة التعبيرات العادية:
- ابدأ بفهم الأحرف الخاصة المستخدمة في التعبير العادي مثل "." '*' '+' '؟' وأكثر.
- اختر لغة برمجة أو أداة تدعم التعبير العادي مثل Python Perl أو grep.
- اكتب النمط الخاص بك باستخدام الأحرف الخاصة والأحرف الحرفية.
- استخدم الوظيفة أو الطريقة المناسبة للبحث عن النمط في سلسلة.
أمثلة:
- لمطابقة سلسلة من الأحرف الحرفية، ما عليك سوى كتابة تلك الأحرف في النمط.
- لمطابقة حرف واحد من مجموعة من الاحتمالات، استخدم الأقواس المربعة، على سبيل المثال: [0123456789] يطابق أي رقم.
- لمطابقة صفر أو أكثر من تكرارات التعبير السابق، استخدم رمز النجمة (*).
- لمطابقة تكرار واحد أو أكثر للتعبير السابق، استخدم رمز الزائد (+).
- من المهم ملاحظة أن التعبير العادي يمكن أن يكون معقدًا ويصعب قراءته، لذا يوصى باستخدام أدوات مثل أدوات اختبار التعبير العادي لتصحيح أنماطك وتحسينها.
التعبير العادي (يُسمى أحيانًا التعبير العقلاني) هو سلسلة من الأحرف التي تحدد نمط البحث بشكل أساسي للاستخدام في مطابقة النمط مع السلاسل أو مطابقة السلاسل، مثل عمليات "البحث والاستبدال". التعبيرات العادية هي طريقة عامة لمطابقة الأنماط مع تسلسلات من الأحرف. يتم استخدامه في كل لغة برمجة مثل C++ وJava وPython.
ما هو التعبير العادي وما الذي يجعله مهمًا جدًا؟
يتم استخدام Regex في تحليلات جوجل في مطابقة عناوين URL في دعم البحث والاستبدالات في برامج التحرير الأكثر شيوعًا مثل Sublime Notepad++ Brackets Google Docs وMicrosoft Word.
Example : Regular expression for an email address :
^([a-zA-Z0-9_-.]+)@([a-zA-Z0-9_-.]+).([a-zA-Z]{25})$
يمكن استخدام التعبير العادي أعلاه للتحقق مما إذا كانت مجموعة معينة من الأحرف هي عنوان بريد إلكتروني أم لا.
كيفية كتابة التعبيرات العادية؟
هناك عناصر معينة تستخدم لكتابة التعبيرات العادية كما هو مذكور أدناه:
1. أجهزة إعادة الإرسال ( * + و { } )
تعمل هذه الرموز كمكررات وتخبر الكمبيوتر بأنه سيتم استخدام الحرف السابق لأكثر من مرة واحدة فقط.
2. رمز النجمة ( * )
يخبر الكمبيوتر بمطابقة الحرف السابق (أو مجموعة الأحرف) لمدة 0 مرة أو أكثر (حتى عدد لا نهائي).
Example : The regular expression ab*c will give ac abc abbc abbbc….and so on 3. رمز الزائد ( + )
يخبر الكمبيوتر بتكرار الحرف السابق (أو مجموعة الأحرف) مرة واحدة على الأقل أو أكثر (حتى عدد لا نهائي).
Example : The regular expression ab+c will give abc abbc
abbbc … and so on.
4. الأقواس المتعرجة { … }
فهو يخبر الكمبيوتر بتكرار الحرف السابق (أو مجموعة الأحرف) لعدد مرات يساوي القيمة الموجودة داخل هذه القوس.
Example : {2} means that the preceding character is to be repeated 2
times {min} means the preceding character is matches min or more
times. {minmax} means that the preceding character is repeated at
least min & at most max times.
5. حرف البدل ( . )
يمكن أن يحل رمز النقطة محل أي رمز آخر ولهذا يطلق عليه اسم حرف البدل.
تحويل nfa إلى dfa
Example :
The Regular expression .* will tell the computer that any character
can be used any number of times.
6. الحرف الاختياري (؟)
يخبر هذا الرمز الكمبيوتر أن الحرف السابق قد يكون أو لا يكون موجودًا في السلسلة المراد مطابقتها.
Example :
We may write the format for document file as – docx?
The ‘?’ tells the computer that x may or may not be
present in the name of file format.
7. رمز الإقحام (^). ( تحديد موضع المباراة )
يخبر رمز علامة الإقحام الكمبيوتر أن المطابقة يجب أن تبدأ في بداية السلسلة أو السطر.
Example : ^d{3} will match with patterns like '901' in '901-333-'.8. رمز الدولار ($).
يخبر الكمبيوتر أن المطابقة يجب أن تحدث في نهاية السلسلة أو قبل n في نهاية السطر أو السلسلة.
شمود 755
Example : -d{3}$ will match with patterns like '-333' in '-901-333'.9. فئات الشخصيات
تتطابق فئة الأحرف مع أي مجموعة من الأحرف. يتم استخدامه لمطابقة العنصر الأساسي للغة مثل الحرف والرقم والمسافة والرمز وما إلى ذلك.
ق : يطابق أي أحرف مسافات بيضاء مثل المسافة وعلامة التبويب.
س : يطابق أي أحرف ليست بها مسافات بيضاء.
د : يطابق أي حرف رقمي.
د: يطابق أي أحرف غير رقمية.
في : يطابق أي حرف كلمة (بشكل أساسي أبجدي رقمي)
في : يطابق أي حرف غير كلمة.
ب : يطابق أي حد للكلمة (قد يشمل ذلك مسافات وشرطات وفواصل وفاصلة منقوطة وما إلى ذلك.
[مجموعة_الأحرف]: يطابق أي حرف واحد في set_of_characters. بشكل افتراضي، تكون المطابقة حساسة لحالة الأحرف.
Example : [abc] will match characters ab and c in any string.10. [^set_of_characters] النفي:
يطابق أي حرف مفرد غير موجود في set_of_characters. بشكل افتراضي، تكون المطابقة حساسة لحالة الأحرف.
Example : [^abc] will match any character except abc .11. [الأول والأخير] نطاق الأحرف:
يطابق أي حرف واحد في النطاق من الأول إلى الأخير.
Example : [a-zA-z] will match any character from a to z or A to Z.12. رمز الهروب ( )
إذا كنت تريد مطابقة الأحرف الفعلية '+' '.' وما إلى ذلك، أضف شرطة مائلة عكسية () قبل هذا الحرف. سيخبر هذا الكمبيوتر أن يتعامل مع الحرف التالي كحرف بحث ويأخذه في الاعتبار كنمط مطابق.
Example : d+[+-x*]d+ will match patterns like '2+2'
and '3*9' in '(2+2) * 3*9'.
13. تجميع الأحرف ( )
يمكن تجميع مجموعة من الرموز المختلفة للتعبير العادي معًا لتكون بمثابة وحدة واحدة وتكون بمثابة كتلة لذلك تحتاج إلى تغليف التعبير العادي بين قوسين ( ).
Example : ([A-Z]w+) contains two different elements of the regular
expression combined together. This expression will match any pattern
containing uppercase letter followed by any character.
14. شريط عمودي ( | )
يطابق أي عنصر واحد مفصول بحرف الشريط العمودي (|).
Example : th(e|is|at) will match words - the this and that.15. رقم
المرجع الخلفي: يسمح بتحديد تعبير فرعي مطابق مسبقًا (التعبير الذي تم التقاطه أو وضعه بين قوسين دائريين) لاحقًا في نفس التعبير العادي. n تعني أن المجموعة المحصورة داخل القوس n ستتكرر في الموضع الحالي.
Example : ([a-z])1 will match ee in Geek because the character
at second position is same as character at position 1 of the match.
16. كيف (؟#تعليق)
التعليق المضمّن: ينتهي التعليق عند قوس الإغلاق الأول.
Example : bA(?#This is an inline comment)w+b17. # [إلى نهاية السطر]
تعليق الوضع X. يبدأ التعليق بعلامة # غير مُفلتة ويستمر حتى نهاية السطر.
Example : (?x)bAw+b#Matches words starting with A