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

regex في الميدان — استخراج الإيميلات والأرقام

القوة الحقيقية تجي لما نستخرج كل المطابقات مو أولها. الدالة re.findall(النمط, النص) ترجع قائمة بكل اللي لقيته:

import re

text = "راسلنا: felix@zoxa.dev أو support@vlxai.app"
emails = re.findall(r"\S+@\S+", text)
print(emails)
# ['felix@zoxa.dev', 'support@vlxai.app']

النمط r"\S+@\S+" يقرأ: مجموعة حروف بدون مسافة (\S) وبعدها @ وبعدها حروف بدون مسافة — شكل إيميل مبسط.

مثال عملي: عد كم مرة انذكر رقم بالسجل:

log = "زيارة 12 نقطة 7 نقطة 99 نقطة 12"
nums = re.findall(r"\d+", log)
print(nums)          # ['12', '7', '99', '12']
print(len(nums))     # 4 أرقام

وتقدر تتحقق من صحة مدخلات المستخدم — هل عبي رقم سليم؟:

phone = "0512345678"
if re.fullmatch(r"\d{10}", phone):
    print("رقم سليم")
# \d{10} = عشر أرقام بالضبط

الأقواس المعقوفة {10} تعني: كرر اللي قبلك 10 مرات بالضبط. و fullmatch تشترط النص كله يطابق النمط من أوله لآخره.

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

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

1. وش فرق findall عن search؟
2. وش معنى \S؟
3. وش يفحص re.fullmatch(r'\d{10}', x)؟
الدرس 49 الدرس 51 — ملفات CSV — جداول بيانات حقيقية بملف واحد
FeLiXFeLiX AI — مساعد المنصتين