Python Programming

إتقان محاكيات التعبيرات النمطية البرمجية مع دالة re.sub() في بايثون لا تترجم فقط – بل قم بالتكييف. فكّر كيف تتغير عادات البحث، ونية الكلمات المفتاحية، وحتى ما يُعتبر عنوانًا جذابًا من ثقافة إلى أخرى.

Spread the love

تُعدُّ التعابير النمطية (regex أو regexp) أدوات قوية لمطابقة الأنماط داخل السلاسل النصية. توفر وحدة re في بايثون وظائف قوية لعمليات التعابير النمطية، حيث تلعب العلامات البرية دورًا محوريًا. تستكشف هذه المقالة كيفية استخدام العلامات البرية بفعالية مع دالة re.sub() لمهام معالجة السلاسل النصية المختلفة.

جدول المحتويات

الاستبدالات الأساسية للتعابير النمطية مع العلامات البرية

تُعدُّ دالة re.sub() أساسية لاستبدالات التعابير النمطية. بناء جملتها هو re.sub(pattern, replacement, string, count=0, flags=0). النمط pattern هو تعبير نمطي، وreplacement هو السلسلة المُستبدلة، وstring هو المدخل، وcount يحد من عمليات الاستبدال، وflags يُعدّل سلوك المطابقة. تُعزز العلامات البرية مرونة pattern بشكل كبير.

لنُستبدل جميع الحروف المتحركة في سلسلة نصية بـ “X”:


import re

text = "Hello, World!"
replaced_text = re.sub(r"[aeiou]", "X", text, flags=re.IGNORECASE)
print(f"Original: {text}")
print(f"Replaced: {replaced_text}")

[aeiou] هي مجموعة من علامات برية تُطابق أي حرف متحرك (باستخدام حالة الأحرف غير حساسة بسبب re.IGNORECASE).

استخدام العلامات البرية المتقدمة والكميات

يدعم re.sub() علامات برية معقدة. لنُستبدل متواليات رقم أو أكثر بـ “NUMBER”:


import re

text = "My phone number is 123-456-7890 and my zip code is 90210."
replaced_text = re.sub(r"d+", "NUMBER", text)
print(f"Original: {text}")
print(f"Replaced: {replaced_text}")

d+ تُطابق رقمًا أو أكثر (d تُطابق رقمًا، و+ تُشير إلى تكرار واحد أو أكثر).

فيما يلي جدول يلخص العلامات البرية الرئيسية:

العلامة البرية الوصف
. تُطابق أي حرف باستثناء سطر جديد.
* تُطابق صفر أو أكثر من تكرارات العنصر السابق.
+ تُطابق تكرارًا واحدًا أو أكثر من العنصر السابق.
? تُطابق صفر أو تكرار واحد للعنصر السابق.
[] يُعرّف مجموعة أحرف (مثل: [abc]).
[^] يُعرّف مجموعة أحرف مُنكرة (مثل: [^abc]).
() يُنشئ مجموعة احتجاز.
يُهرب الأحرف الخاصة (مثل: . تُطابق نقطة حرفية).

دمج العلامات البرية لأنماط معقدة

يُنشئ دمج العلامات البرية أنماطًا قوية. لنُستبدل الكلمات التي تبدأ بـ “a” متبوعة بأي أحرف:


import re

text = "A apple a day keeps the doctor away."
replaced_text = re.sub(r"aw*", "WORD", text, flags=re.IGNORECASE)
print(f"Original: {text}")
print(f"Replaced: {replaced_text}")

aw* تُطابق “a” متبوعة بصفر أو أكثر من أحرف الكلمات (w).

أمثلة من العالم الحقيقي: استخراج عناوين البريد الإلكتروني وأرقام الهواتف

يُبرع re.sub() في التعامل مع الأنماط المعقدة. لنُستبدل عناوين البريد الإلكتروني بـ “EMAIL”:


import re

text = "Contact us at [email protected] or [email protected]."
replaced_text = re.sub(r"[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,}", "EMAIL", text)
print(f"Original: {text}")
print(f"Replaced: {replaced_text}")

يُطابق هذا التعبير النمطي تنسيق بريد إلكتروني شائع.

الخاتمة

توفر دالة re.sub()، مُقترنة بالعلامات البرية للتعابير النمطية، طريقة مرنة وفعالة لمعالجة السلاسل النصية في بايثون. إن إتقان هذه التقنيات قيّم لمهام معالجة النصوص وتنظيف البيانات. إن إنشاء تعابير نمطية دقيقة أمر بالغ الأهمية لتجنب الاستبدالات غير المقصودة. إن التجربة وفهم دقائق العلامات البرية هما المفتاح لمعالجة السلاسل النصية بفعالية.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *