كيفية استخدام التعبيرات المنتظمة في بايثون؟

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة عن التعبيرات المنتظمة في بايثون

تُعد معالجة النصوص من أكثر المهام شيوعًا في البرمجة. وتصبح التعبيرات المنتظمة (Regular Expressions) أداة لا غنى عنها عند حل مختلف المشكلات. قد يكون ذلك تحليل صفحات HTML، أو التحقق من تنسيق البيانات، أو معالجة سجلات النظام.

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

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

التعريف والغرض

التعبيرات المنتظمة (Regular Expressions أو RegEx) هي لغة خاصة لوصف أنماط البحث في النص. يمكنك من خلالها البحث عن أجزاء النص والتحقق منها واستبدالها وفقًا لقواعد محددة.

المهام النموذجية للتعبيرات المنتظمة

تحل التعبيرات المنتظمة في بايثون مجموعة واسعة من المهام:

  • التحقق من صحة عناوين البريد الإلكتروني وأرقام الهواتف
  • البحث عن جميع القيم الرقمية في النص
  • استبدال الأحرف غير المرغوب فيها وتنظيف البيانات
  • استخراج كلمات أو عبارات معينة من نصوص كبيرة
  • تحليل البيانات المنظمة (Parsing)
  • معالجة سجلات النظام والملفات

التحضير للعمل

استيراد الوحدة re

قبل البدء في العمل مع التعبيرات المنتظمة، يجب استيراد الوحدة الخاصة بها:

import re

الرموز والتراكيب الأساسية

للعمل بكفاءة مع التعبيرات المنتظمة، من المهم معرفة الرموز الأساسية ووظائفها:

الرمز الوظيفة
. أي حرف باستثناء السطر الجديد
\d أي رقم (0-9)
\D أي حرف غير رقمي
\w حرف أو رقم أو شرطة سفلية
\W جميع الأحرف باستثناء \w
\s مسافة أو علامة تبويب أو سطر جديد
\S جميع الأحرف باستثناء المسافات
^ بداية السطر
$ نهاية السطر
[] حرف من المجموعة المحددة
* صفر أو أكثر من التكرارات
+ تكرار واحد أو أكثر
{n,m} من n إلى m من التكرارات

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

طريقة re.search() للبحث عن أول تطابق

تقوم طريقة re.search() بالبحث عن أول ظهور للنمط المحدد في السلسلة النصية. تقوم بإرجاع كائن Match إذا نجح البحث، أو None إذا لم يتم العثور على تطابق.

import re

text = "البريد الإلكتروني: example@mail.com"
match = re.search(r'\w+@\w+\.\w+', text)

if match:
    print("تم العثور على بريد إلكتروني:", match.group())

نتيجة التنفيذ:

تم العثور على بريد إلكتروني: example@mail.com

شرح نمط البحث

دعنا نحلل النمط المستخدم جزءًا تلو الآخر:

  • \w+ — حرف أو رقم أو شرطة سفلية مكرر مرة أو أكثر
  • @ — رمز "@" (عنصر إلزامي في البريد الإلكتروني)
  • \. — نقطة (يتم الهروب منها بشرطة مائلة عكسية)
  • \w+ — نطاق المستوى الأعلى

طريقة re.findall() للبحث عن جميع التطابقات

عند الحاجة إلى العثور على جميع تطابقات النمط في النص، يتم استخدام طريقة findall(). تقوم بإرجاع قائمة بجميع التطابقات التي تم العثور عليها.

text = "الأسعار: 100 ريال، 250 ريال، 350 ريال"
numbers = re.findall(r'\d+', text)
print(numbers)  # ['100', '250', '350']

طريقة re.sub() للاستبدال وفقًا لنمط

تقوم طريقة re.sub() باستبدال جميع تكرارات النمط المحدد بنص آخر.

text = "رقم الهاتف: 123-456-7890"
cleaned_text = re.sub(r'\D', '', text)  # إزالة كل ما ليس رقمًا
print(cleaned_text)  # 1234567890

نصائح إضافية للمبتدئين

عند البدء في استخدام التعبيرات المنتظمة، يُنصح باختبار أنماطك باستخدام أدوات تفاعلية مثل regex101.com. تذكر دائمًا استخدام السلسلة الأولية (raw string) بإضافة الحرف r قبل النمط لتجنب مشاكل الهروب.

المدونات

توصيات الكتب