0Pricing
Learn AI with Python · درس

وحدة re: ‏search وmatch وfindall وsub

re.search() وre.match() وre.findall() وre.sub() وre.compile() لتحسين الأداء.

وحدة re: ‏search وmatch وfindall وsub درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

الوحدة re

تتيح Python استخدام التعبيرات النمطية من خلال الوحدة المضمنة re. والدوال الأساسية هي search وmatch وfindall وsub.

معرفة الدالة المناسبة لكل حالة تمثل نصف التحدي.

import re   # always import it first

re.search — البحث في أي موضع

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

import re

m = re.search("\d+", "order 42 shipped")
if m:
    print(m.group())   # "42"
    print(m.start())   # 6

re.match — المطابقة من البداية

تطابق re.match من بداية السلسلة فقط. إذا لم يكن النمط في الموضع 0، فإنها تعيد None حتى إذا ظهر النمط لاحقًا.

import re

print(re.match("\d+", "42 items"))    # matches "42"
print(re.match("\d+", "items 42"))    # None

search مقابل match

الفرق الأساسي:

  • match — يجب أن يبدأ النمط عند الفهرس 0
  • search — يمكن أن يظهر النمط في أي موضع

غالبًا ما تحتاج إلى search. استخدم match فقط عندما تحتاج تحديدًا إلى التحقق من البادئة.

re.findall — الحصول على كل التطابقات

تعيد re.findall قائمة بكل التطابقات غير المتداخلة كسلاسل نصية، وليس ككائنات Match. وهي مثالية لمهام الاستخراج.

import re

emails = re.findall("\w+@\w+\.\w+", "a@x.com and b@y.org")
print(emails)   # ["a@x.com", "b@y.org"]

findall مع المجموعات

إذا احتوى نمطك على مجموعات ملتقطة، فإن findall تعيد الأجزاء الملتقطة بدلًا من التطابق الكامل — وهذا أمر مفاجئ شائع.

يحتوي كل صف هنا على رمز المنطقة وبقية الرقم.

import re

print(re.findall("(\d{3})-(\d{4})", "555-1234 and 999-8765"))
# [("555", "1234"), ("999", "8765")]

re.finditer — كائنات Match

عندما تحتاج إلى المواضع أو المجموعات لكل تطابق، استخدم re.finditer. فهي تنتج كائنات Match يمكنك تكرارها بشكل كسول.

import re

for m in re.finditer("\d+", "a1 b22 c333"):
    print(m.group(), "at", m.start())

re.sub — البحث والاستبدال

تستبدل re.sub(pattern, replacement, text) كل تطابق بسلسلة الاستبدال، وتعيد سلسلة جديدة.

وهي أساسية لتنظيف النصوص — مثل إخفاء البيانات وتوحيدها وإزالة أجزائها.

import re

clean = re.sub("\d+", "#", "Room 101 and 202")
print(clean)   # "Room # and #"

sub مع مراجع خلفية ودوال

يمكن أن يشير الاستبدال إلى المجموعات الملتقطة باستخدام \1، أو أن يكون دالة لتنفيذ منطق ديناميكي.

import re

# Swap "first last" -> "last, first"
print(re.sub("(\w+) (\w+)", "\\2, \\1", "Ada Lovelace"))

# Function replacement: double each number
print(re.sub("\d+", lambda m: str(int(m.group()) * 2), "a1 b2"))

re.compile — إعادة استخدام الأنماط

عندما تستخدم نمطًا مرات كثيرة، مثلًا داخل حلقة، تنشئ re.compile النمط مرة واحدة في صورة كائن نمط قابل لإعادة الاستخدام. وهذا أسرع وأكثر وضوحًا في القراءة.

import re

num = re.compile("\d+")
for line in ["a1", "b22", "c333"]:
    print(num.findall(line))

أعلام مفيدة

تغيّر الأعلام سلوك المطابقة:

  • re.IGNORECASE — تجاهل حالة الأحرف
  • re.MULTILINE — تجعل ^ و$ يطابقان كل سطر
  • re.DOTALL — تجعل . يطابق أسطرًا جديدة أيضًا
import re

print(re.findall("cat", "Cat CAT cat", re.IGNORECASE))
# ["Cat", "CAT", "cat"]

تحقق سريع: search مقابل findall

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

مراجعة: الوحدة re

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

  • re.search — أول تطابق في أي موضع (كائن Match)
  • re.match — المطابقة من البداية فقط
  • re.findall — قائمة بكل التطابقات (تغيّر المجموعات الناتج)
  • re.finditer — كائنات Match مع المواضع
  • re.sub — استبدال التطابقات، باستخدام مراجع خلفية أو دالة
  • re.compile والأعلام لإعادة الاستخدام والتحكم

التالي: المجموعات الملتقطة والمجموعات المسماة.

الأسئلة الشائعة

هل درس «وحدة re: ‏search وmatch وfindall وsub» مجاني؟

نعم — نص درس «وحدة re: ‏search وmatch وfindall وsub» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

ماذا ستتعلم في «وحدة re: ‏search وmatch وfindall وsub»؟

re.search() وre.match() وre.findall() وre.sub() وre.compile() لتحسين الأداء. تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟

لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «وحدة re: ‏search وmatch وfindall وsub»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟

نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أنماط Regex وفئات المحارف
  2. وحدة re: ‏search وmatch وfindall وsub
  3. مجموعات الالتقاط والمجموعات المسماة
  4. تنظيف النصوص للذكاء الاصطناعي باستخدام Regex
← العودة إلى Learn AI with Python