التعبير العادي: ماذا يعني

ما هو التعبير العادي؟

Regex أو التعبيرات العادية، هي ترميز مطابق للنمط المبرمجين تستخدم للبحث عن أنماط معينة في النص. يمكن للتعبيرات العادية البحث عن أي شيء تقريبًا ، اعتمادًا على كيفية هيكلها ؛ يتم استخدامها في كل مكان من قبل المبرمجين لأنها لا تقدر بثمن لمساعدة أجهزة الكمبيوتر على فرز البيانات بسرعة وتصفية الهراء الذي قد يتسبب في حدوث أخطاء.

تبدو التعبيرات العادية مخيفة ، خاصة لغير المبرمجين. فقط انظر إلى هذا:

[a-zA-Z0-9 _. + -] + @ [a-zA-Z0-9 _-] + \. [a-zA-Z0-9 _.-] +

من الناحية الواقعية ، إنه في الواقع ليس بهذا السوء ؛ هذا واحد يطابق عناوين البريد الإلكتروني. كما سترى ، يمكن تقسيم التعبيرات إلى أحرف فردية ، وكلها تخبر البرنامج بما يبحث عنه.

التعبيرات النمطية عالمية تقريبًا. نفس العام بناء الجملة ينطبق على جميع اللغات مع وجود اختلافات طفيفة هنا وهناك. يحتوي هذا الدليل على أمثلة من كل من Python و JavaScript بالإضافة إلى التعبير العادي القديم. إذا كنت تعمل بلغة مختلفة ، فلا داعي للقلق. سينطبق كل شيء تقريبًا على اللغة التي تختارها أيضًا.

أساسيات Regex

من الناحية الفنية ، لا يوجد الكثير من الأشياء التي لا يمكن اعتبارها تعبيرات عادية ، لأن السلاسل الحرفية للنص هي في الحقيقة سلاسل بسيطة. إذا كنت ستستخدم "abcde" كتعبير عادي ، فستبحث لغة البرمجة عن هذه السلسلة بالضبط.

instagram viewer

أول حرف مطابقة أكثر ديناميكية يجب إلقاء نظرة عليه هو "." حرف. في هذا السياق ، فإن الحرف النقطي هو حرف بدل. إذا كنت تبحث باستخدامه ، فسيعيد برنامجك أي حرف يعثر عليه كمطابقة.

لذا ، ماذا لو كنت تريد البحث عن نقطة حرفية؟ هذا ليس بالأمر الصعب. عندما تريد استخدام نقطة حرفية ، أضف شرطة مائلة للخلف قبلها ، مثل هذا: "\."

أحرف الشرطة المائلة للخلف

تلعب الشرطة المائلة للخلف الكثير من الأدوار هنا. تتضمن معظم أحرف regex الرئيسية شرطة مائلة للخلف.

أرقام التعبير العادي
البحث عن الأرقام باستخدام Regex في Python.

ألق نظرة على بعض الأمثلة:

  • \ d: أرقام من 0 إلى 9
  • \ w: أحرف وأرقام وشرطة سفلية "أحرف الكلمات"
  • \ s: أحرف المسافات البيضاء ، بما في ذلك علامات التبويب والأسطر الجديدة والمسافات العادية

إذا استخدمت الحرف الكبير بدلاً من ذلك مع أيٍ من هؤلاء ، فستحصل على العكس. على سبيل المثال ، يمنحك الرمز "\ D" كل شيء ما عدا الأرقام.

الطبقات

ال أحرف الشرطة المائلة للخلف جيدة ، لكنها لا تزال جامدة نوعًا ما. بشكل عام ، سترغب في مطابقة أحرف أو أرقام أو بعض الأحرف الخاصة.

فئات التعبير العادي
استخدام فئات Regex للبحث عن الأحرف في Python.

ضع الأحرف التي تريد مطابقتها بين قوسين مربعين "[]" ، وسيتطابق برنامجك مع أي منهما. وهذا ما يسمى بفئة regex.

[abcd1234]

المثال أعلاه لا يزال غير فعال. بدلاً من ذلك ، يمكنك استخدام شرطة لتحديد نطاق ؛ على سبيل المثال ، جميع الأحرف الصغيرة:

[a-z]

يمكنك سرد النطاقات أيضا. يطابق التعبير أدناه جميع الأحرف والأرقام:

[a-zA-Z0-9]

إذا كنت ستقوم بتضمين الشرطة في مجموعة الشخصيات الخاصة بك ، فقم بتثبيتها في النهاية لمنعها من التقييم. إنه يعمل مع الشخصيات الخاصة الأخرى أيضًا.

[a-zA-Z0-9 _. + -]

كما هو الحال مع أحرف الشرطة المائلة للخلف ، يمكنك الحصول على النتيجة العكسية هنا أيضًا. ضع "^" في بداية الفصل الدراسي لاستبعادهم من نتائجك. سيؤدي هذا إلى استبعاد الأرقام والعديد من الأحرف الخاصة من النتائج:

[^0-9_+.-]

مجموعات

تستخدم المجموعات مجموعة من الأقواس لفصل تعبيرك. يقومون بتجميع البيانات ، مما يسمح لبرنامجك باستهدافها واستخدامها. عندما يقوم البرنامج بتجريد ' http://' من عنوان ويب ، فإنه يستخدم مجموعات regex لتحقيق ذلك. يتيح لها regex استهداف معايير معينة ، وتسمح لها المجموعات بفصل الأقسام.

مجموعات التعبير العادي
تساعد مجموعات Regex في العثور على عناوين URL في JavaScript.

تتيح لك المجموعات أيضًا الاختيار بين نمط أو آخر. يستخدمون واحدًا "|" ليكون بمثابة "أو" في التعبير. سيطابق التعبير أدناه أيًا مما يلي: .com أو .org أو .net أو .edu أو .gov.

\. (com | org | net | edu | gov)

محددو الكمية

المحددات الكمية هي بالضبط ما تبدو عليه. يخبرون التعبير عن كمية الشخصية التي تبحث عنها. هذه هي المحددات الكمية المتاحة:

  • *: صفر أو أكثر
  • +: واحد أو أكثر
  • ؟: صفر أم واحد
  • {3}: المبلغ بين قوسين

ضع أيًا من هذه المحددات الكمية في نهاية الحرف أو الفئة التي تريد تحديد مقدارها. يبحث هذا المثال عن أرقام الهاتف القياسية المكونة من سبعة أرقام:

\ d {3} [. * -] \ d {3} [. * -] \ d {4}

المراسي والحدود

تتيح لك التعبيرات العادية البحث عن أنماط بناءً على موضعها داخل سلسلة نصية أو حول كلمة.

ارتساءات التعبير العادي
تستخدم ارتساءات Regex تحديد الموضع للعثور على تطابق في JavaScript.

هذه هي خياراتك الأساسية:

  • ^: بداية سلسلة
  • $: نهاية السلسلة
  • \ b: حدود الكلمة (بداية أو نهاية الكلمة)

إذا كنت تريد البحث عن السلاسل التي تبدأ بحرف فقط ، فيمكنك تجربة:

^ [a-zA-Z]

لنفترض أنك تريد البحث عن كلمة "هي" فقط ، وليس الكلمات التي تحتوي على الحرفين I و T ؛ هذا هو المكان الذي ستستخدم فيه حدود الكلمات.

\ b (i | I) t \ ب

افكار اخيرة

يمكن أن توفر لك التعبيرات العادية الكثير من المتاعب عند البرمجة. تخيل محاولة كتابة المنطق لإنجاز أي من الأمثلة في هذه المقالة. ستكون فوضى رهيبة. بمجرد أن تشعر بالراحة معهم ، ستجد نفسك على الأرجح مستمتعًا بقوة ومرونة regex.