التعبيرات العادية في بايثون أصبحت سهلة

التعبيرات العادية (regex) هي أدوات قوية تستخدم لمطابقة السلاسل والتلاعب بها بناءً على الأنماط. في Python، توفر وحدة re الدعم للتعبيرات العادية، مما يسمح لك بإجراء عمليات معقدة على السلاسل بكفاءة. ستقدم لك هذه المقالة أساسيات التعبيرات العادية وتوضح لك كيفية استخدامها بفعالية في Python.

البدء باستخدام وحدة re

لاستخدام التعبيرات العادية في بايثون، تحتاج إلى استيراد وحدة re. توفر هذه الوحدة عدة وظائف للعمل مع أنماط التعبيرات العادية:

  • re.match() - التحقق من التطابق فقط في بداية السلسلة.
  • re.search() - يبحث عن تطابق في السلسلة بأكملها.
  • re.findall() - يبحث عن جميع المطابقات في السلسلة ويعيدها على شكل قائمة.
  • re.sub() - يستبدل المطابقات في السلسلة باستبدال محدد.

مطابقة الأنماط الأساسية

تستخدم التعبيرات العادية أحرفًا خاصة لتحديد أنماط البحث. وفيما يلي بعض الأنماط الأساسية:

  • . - يتطابق مع أي حرف واحد باستثناء سطر جديد.
  • \d - يتطابق مع أي رقم (ما يعادل [0-9]).
  • \w - يتطابق مع أي حرف أبجدي رقمي (مكافئ لـ [a-zA-Z0-9_]).
  • \s ​​- يتطابق مع أي حرف مسافة بيضاء.
  • ^ - يتطابق مع بداية السلسلة.
  • $ - يتطابق مع نهاية السلسلة.

أمثلة

فيما يلي بعض الأمثلة التي توضح مطابقة الأنماط الأساسية:

import re

# Match a pattern at the beginning of a string
result = re.match(r'Hello', 'Hello, World!')
print(result.group())  # Output: Hello

# Search for a pattern in the entire string
result = re.search(r'\d+', 'There are 24 hours in a day.')
print(result.group())  # Output: 24

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

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

pattern = r'(\d{3})-(\d{2})-(\d{4})'
text = 'My number is 123-45-6789.'

# Find all matches with groups
match = re.search(pattern, text)
if match:
    print(f'Area Code: {match.group(1)}')  # Output: 123
    print(f'Prefix: {match.group(2)}')     # Output: 45
    print(f'Suffix: {match.group(3)}')     # Output: 6789

استخدام الأحرف الخاصة

تتضمن التعبيرات العادية العديد من الأحرف الخاصة لمطابقة الأنماط الأكثر تعقيدًا:

  • * - يطابق 0 أو أكثر من حالات العنصر السابق.
  • + - يطابق 1 أو أكثر من حالات العنصر السابق.
  • ? - يطابق 0 أو 1 تكرار للعنصر السابق.
  • {n} - يتطابق تمامًا مع n تكرارات العنصر السابق.
  • | - يتطابق مع النمط السابق أو النمط التالي له.

أمثلة

فيما يلي بعض الأمثلة باستخدام الأحرف الخاصة:

# Match a pattern with 0 or more occurrences
result = re.findall(r'\d*', '123 abc 456')
print(result)  # Output: ['123', '', '', '456']

# Match a pattern with 1 or more occurrences
result = re.findall(r'\d+', 'There are 24 apples and 3 oranges.')
print(result)  # Output: ['24', '3']

استبدال النص بالتعبيرات العادية

يتم استخدام الدالة re.sub() لاستبدال أجزاء من السلسلة التي تطابق نمطًا:

text = 'The rain in Spain falls mainly in the plain.'

# Replace 'Spain' with 'France'
new_text = re.sub(r'Spain', 'France', text)
print(new_text)  # Output: The rain in France falls mainly in the plain.

خاتمة

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