دليل المبتدئين للتعبيرات العادية باستخدام بايثون

دليل المبتدئين للتعبيرات العادية باستخدام بايثون

إذا كنت مبرمجًا ، فمن المحتمل أنك تعرف بالفعل ما هي التعبيرات العادية (regex). تم تنفيذ أنماط Regex في كل لغة برمجة سائدة تقريبًا ، ولكن لا يزال معظم المطورين لا يتعرفون على قوة وتعدد استخدامات هذه الأنماط.





يدور هذا الدليل حول التعبيرات العادية وكيف يمكنك استخدامها في لغة برمجة Python.





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

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





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

السبب الرئيسي وراء ابتعاد العديد من المطورين عن التعبيرات العادية هو قلة الوعي بقوة مطابقة الأنماط. حتى أن البعض يجد التعبيرات النمطية محيرة بسبب الكم الهائل من الأحرف والتسلسلات المستخدمة في الأنماط.



مهما كان السبب ، فإن التعبيرات العادية هي وستكون أحد أهم جوانب البرمجة التي يجب أن يعرفها الجميع.

كيفية استعادة الصور المحذوفة على android

التعبيرات العادية: مطابقة الأحرف والتسلسلات

Regex هي لغة جديدة تمامًا في حد ذاتها. يفسر محرك regex أنماطًا تتكون من عدة أحرف مزودة بمعاني محددة. تتطابق العناصر الحرفية الأساسية مثل الأحرف الأبجدية الرقمية مع نفسها. لكن الأحرف المعقدة مثل $ ، * ، + ، {، إلخ. تساعد في مطابقة الترتيب الأعلى.





  1. النجمة (*): يطابق الحرف السابق صفرًا أو أكثر من المرات. المعنى الحرفي للحرف سيكون 'العنصر مضروبًا في عدد n من المرات'. على سبيل المثال ، إذا كان التعبير النمطي هو ABC * ، السلاسل المطابقة ستكون ab ، abc ، abcc ، abccc ، abcccc ، إلخ. التعبير [قبل الميلاد]* سيطابق bc ، و bcbc ، و bcbc ، وما إلى ذلك.
  2. المزيد (+): يتطابق مع الحرف السابق مرة واحدة أو أكثر. عمل + الحرف مشابه لـ * ، لكن ال + يتجاهل الحرف النمط إذا لم يظهر الحرف. على سبيل المثال، abc + سيطابق abc و abcc و abccc وما إلى ذلك ولكن ليس ab.
  3. علامة استفهام (؟): يتطابق مع الحرف السابق صفر أو مرة واحدة (مرات). على سبيل المثال ، النمط ABC؟ سيتطابق مع ab و abc فقط.
  4. أنبوب (|): تستخدم كثنائي أو المشغل أو العامل. يطابق أيًا من الأحرف التي تسبق الأنبوب الذي يليه. على سبيل المثال، أ | ب سيطابق إما أ أو ب.
  5. نقطة (.): يتطابق مع شخصية غير معروفة هويتها. على سبيل المثال، أ سيطابق aac و abc و acc و a2c وما إلى ذلك.
  6. جزر (^): يطابق الحرف الأول في النمط. على سبيل المثال، ^ رع سيطابق الكلمات التي تبدأ بـ خارج مثل Rabbit و Raccoon و Random.
  7. الدولار ($): يطابق الحرف الأخير في النمط. على سبيل المثال، $ سيطابق الكلمات التي تنتهي بـ ا مثل Van و Dan و Plan.
  8. واصلة (-): تستخدم لتحديد مجموعة من الأحرف. على سبيل المثال، [0-9] سيطابق جميع الأحرف الرقمية المكونة من رقم واحد.

التسلسلات الخاصة المستخدمة في أنماط التعبير العادي هي:

  1. إلى: تُرجع تطابقًا إذا كانت الأحرف التالية موجودة في بداية السلسلة. على سبيل المثال، أ سيطابق الكلمات التي تبدأ بـ ال مثل The و Them و They وما إلى ذلك.
  2. ب: تُرجع تطابقًا إذا تم العثور على الحرف في بداية الكلمة أو في نهايتها. على سبيل المثال، bmad و جنون ب سوف تتطابق مع كلمات مثل مصنوع و بدوي على التوالى.
  3. ب: تُرجع تطابقًا إذا لم يتم العثور على الحرف في بداية الكلمة أو نهايتها.
  4. د: يطابق الأحرف الرقمية الموجودة في السلسلة. على سبيل المثال، /د* سيطابق أرقامًا مثل 1 ، 12 ، 1232 ، إلخ.
  5. د: يتطابق مع الأحرف غير الرقمية في السلسلة. سيطابق a ، b ، c ، f ، إلخ.
  6. س: يطابق حرف مسافة بيضاء في النص.
  7. س: يطابق حرفًا غير مسافات بيضاء في النص.
  8. في: تُرجع تطابقًا إذا كانت السلسلة تحتوي على أحرف أبجدية رقمية بما في ذلك الشرطات السفلية. على سبيل المثال، في سيطابق a ، b ، c ، d ، 1 ، 2 ، 3 ، إلخ.
  9. في: تُرجع تطابقًا إذا كانت السلسلة لا تحتوي على أحرف أبجدية رقمية أو شرطات سفلية.
  10. مع: يطابق الأحرف الموجودة في نهاية السلسلة. على سبيل المثال، نهاية Z سيطابق الكلمات التي تنتهي بـ نهاية مثل الانحناء ، الإصلاح ، التميل ، إلخ.

طرق بايثون للتعبيرات العادية

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





لاستيراد ملف إعادة Library في Python ، أضف الكود التالي إلى البرنامج النصي الخاص بك:

import re

لاحظ أنه أثناء تمرير التعبيرات العادية في Python ، نستخدم سلاسل خام لأنها لا تفسر الأحرف الخاصة مثل ن و t بشكل مختلف.

تطابق()

ال مباراة العودة() تقوم الطريقة في Python بإرجاع كائن regex إذا وجد البرنامج تطابقًا في بداية السلسلة المحددة. تأخذ هذه الوظيفة وسيطتين أساسيتين:

re.match(pattern, string)

...أين نمط هو التعبير النمطي و سلسلة هو النص الذي يحتاج إلى البحث.

ألق نظرة على مقتطف الشفرة أدناه.

import re
match = re.match(r'Word', 'This sentence contains a Word')
print(match)

ال ص قبل أن تشير السلسلة إلى السلسلة الأولية.

انتاج:

None

يعود الرمز المذكور أعلاه لا أحد لأن كلمة لم يكن موجودًا في بداية السلسلة.

إذا تم العثور على تطابق ، يمكنك طباعة المطابقة باستخدام مجموعة() الطريقة التي تنتمي إلى كائن regex.

import re
match = re.match(r'Word', 'Word is hard to read')
print(match.group(0))

انتاج:

Word

ال ابحاث () تأخذ الطريقة وسيطات مماثلة مثل re.match (). بينما تُرجع الدالة match () فقط المطابقات الموجودة في بداية السلسلة ، بحث() سيعيد التطابقات الموجودة في أي فهرس في السلسلة.

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
print(match.group(0))

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

Word

جد كل()

كما يمكنك التخمين بالفعل ، فإن ملف جد كل() طريقة إرجاع كل تطابق ممكن في السلسلة.

import re
match = re.search(r'Word', 'This sentence contains a Word. Word is hard to read.')
for elem in match:
print(elem)

بدلاً من إرجاع كائن regex ، تُرجع الدالة findall () قائمة بجميع المطابقات. يمكنك تكرار القائمة باستخدام ملف للحلقة في بيثون .

انشق، مزق()

إذا كنت تريد تقسيم سلسلة إلى سلاسل فرعية باستخدام نمط كمحدد ، فعندئذٍ الانقسام() الوظيفة هي التي تحتاجها.

import re
split = re.split(r'and', 'This word and that and this are different.')
print(split)

انتاج:

['This word', 'that', 'this are different.']

الفرعية()

ال الفرعية() تسمح الطريقة للمستخدم باستبدال كلمة معينة بدلاً من النمط. يأخذ الحجج التالية.

re.sub(pattern, replacement, string)

ضع في اعتبارك مقتطف الشفرة هذا:

import re
result = re.sub(r'and', 'or', 'Dave and Harry must be punished.')
print(result)

انتاج:

Dave or Harry must be punished.

تجميع ()

ال re.compile () الطريقة في إعادة مكتبة تسمح للمستخدم بتخزين نسخة مجمعة من نمط التعبير العادي في الذاكرة. بعد ذلك ، باستخدام الكائن المترجم ، يمكن للمستخدم تصفية تفريغ النص المحدد للأنماط المتطابقة بسرعة.

import re
pattern = re.compile('Python')
match = pattern.findall('Python is a great language for writing scripts. Python is easy to learn.')
print(match)

تُستخدم هذه الوظيفة بشكل أساسي لحفظ الأنماط التي تتطلب موارد كثيرة وتحتاج إلى الكثير من الوقت للتشغيل. يؤدي تجميع النموذج وحفظه ككائن مسبقًا إلى حل هذه المشكلة.

استفد من قوة Regex مع Python

عندما تعمل مع ملفات نصية وإخراج ، فإن regex أداة رائعة لتكون تحت تصرفك. يمكنك كتابة بعض التعليمات البرمجية بسرعة لتصفية أو استبدال أنماط معينة في المستند.

قد يكون حفظ جميع الأحرف وتسلسلات المطابقة أمرًا صعبًا إذا كنت بدأت للتو باستخدام regex. لتحسين التعبيرات العادية ، فإن الإشارة إلى قائمة الأحرف والأساليب والتسلسلات بين الحين والآخر سيساعدك بالتأكيد على المدى الطويل.

يشارك يشارك سقسقة بريد الالكتروني ورقة الغش في Python RegEx للمبرمجين الناشئين

استخدم قائمة تعبيرات Python العادية هذه حتى تتمكن من تحسين استخدام لغة البرمجة متعددة الاستخدامات هذه.

اقرأ التالي
مواضيع ذات صلة
  • برمجة
  • برمجة
  • بايثون
نبذة عن الكاتب ديبيش شارما(79 المقالات المنشورة)

Deepesh هو محرر جونيور لنظام Linux في MUO. يكتب أدلة إعلامية على نظام Linux ، بهدف توفير تجربة سعيدة لجميع الوافدين الجدد. لست متأكدًا من الأفلام ، ولكن إذا كنت تريد التحدث عن التكنولوجيا ، فهو الرجل المناسب لك. في أوقات فراغه ، يمكنك أن تجده يقرأ الكتب أو يستمع إلى أنواع موسيقية مختلفة أو يعزف على جيتاره.

المزيد من Deepesh Sharma

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك