الدرس 49 من 56 · إثراء من كتاب بايثون للجيمي

التعابير النمطية regex — لغة البحث في النصوص

لحد الآن لما نبي نبحث عن شي داخل نص، نستخدم find أو split. بس تخيل بحث يدور على «أي رقم» أو «أي إيميل» أو «أي كلمة تبدأ بحرف معين» — هنا تظهر قوة التعابير النمطية (regex): لغة بحث صغيرة تشتغل داخل بايثون بمكتبة اسمها re.

الفكرة: تكتب نمطاً يصف شكل اللي تدوره، والبايثون يدوره لك داخل النص. أهم حجوزات النمط:

\d   أي رقم من 0 إلى 9
\w   حرف أو رقم أو شرطة سفلية
.    أي حرف كان
+    واحد أو أكثر من اللي قبله
*    صفر أو أكثر
^    بداية النص    $    نهاية النص

الدالة الأساسية re.search(النمط, النص) — ترجع نتيجة لو لقيت، و None لو ما لقيت:

import re

msg = "طلبي رقم 4471 وصل"
if re.search(r"\d+", msg):
    print("فيه رقم بالرسالة!")

m = re.search(r"\d+", msg)
print(m.group())   # 4471 — أول تطابق

الحرف r قبل النص (r"...") يخبر بايثون: لا تفسر الشرطات المائلة — وهذا يسوي خلاف مع \d.

النمط r"\d+" معناه: رقم واحد أو أكثر متتالية — يعني يمسك 4471 كاملة مو رقم رقم.

اختبار سريع للدرس

جاوب على كل الأسئلة — لازم كلها صح. إذا غلطت بيطلع صندوق ذهبي يفهّمك وش الخطأ. مو عيب تغلط، كل مبرمج بالعالم غلط وأخذ منها درس.

1. وش معنى النمط \d+؟
2. وش ترجع re.search(r'\d+', 'أهلاً')؟
3. ليش نكتب r قبل النمط؟
الدرس 48 الدرس 50 — regex في الميدان — استخراج الإيميلات والأرقام
FeLiXFeLiX AI — مساعد المنصتين