مجموعات الالتقاط والمجموعات المسماة
الأقواس للالتقاط، والمجموعات المسماة (?P ...)، وre.fullmatch()، والاستباق والاستدبار.
مجموعات الالتقاط والمجموعات المسماة درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
لماذا نستخدم المجموعات؟
تتيح لك المجموعات عزل أجزاء من التطابق حتى تتمكن من استخراج الجزء الذي تريده تحديدًا — مثل رمز المنطقة من رقم هاتف، أو السنة من تاريخ، أو اسم المستخدم من بريد إلكتروني.
يغطي هذا الدرس المجموعات الملتقطة، والمجموعات المسماة، والمجموعات غير الملتقطة، وعمليات النظر حول النمط.
المجموعات الملتقطة باستخدام ( )
أحط جزءًا من النمط بأقواس لالتقاطه. ويصبح التطابق الكامل، بالإضافة إلى كل مجموعة، متاحًا من خلال كائن Match.
import re
m = re.search("(\d{4})-(\d{2})-(\d{2})", "Date: 2026-05-29")
print(m.group()) # "2026-05-29" (whole match)
print(m.group(1)) # "2026"
print(m.group(2)) # "05"match.group وgroups وgroupdict
أدوات الوصول المفيدة:
m.group(0)— التطابق الكاملm.group(n)— الالتقاط رقم nm.groups()— صفيف يضم جميع الالتقاطات
import re
m = re.search("(\d{4})-(\d{2})-(\d{2})", "2026-05-29")
print(m.groups()) # ("2026", "05", "29")
year, month, day = m.groups()المجموعات المسماة باستخدام (?P<name>...)
قد يصبح ترقيم المجموعات هشًا. تستخدم المجموعات المسماة الصيغة (?P<name>...) حتى تشير إلى الالتقاطات باستخدام اسم ذي معنى.
import re
m = re.search("(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})", "2026-05-29")
print(m.group("year")) # "2026"
print(m.group("month")) # "05"groupdict للناتج المنظم
تعيد m.groupdict() جميع المجموعات المسماة في قاموس — وهو مثالي لتحويل النص المطابق إلى سجلات منظمة.
import re
m = re.search("(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})", "2026-05-29")
print(m.groupdict())
# {"year": "2026", "month": "05", "day": "29"}المجموعات غير الملتقطة (?:...)
تحتاج أحيانًا إلى الأقواس للتجميع فقط، مثل تطبيق محدد تكرار، لكنك لا تريد التقاط المجموعة. استخدم (?:...).
يحافظ ذلك على نظافة ترقيم مجموعاتك.
import re
# Group "ab" so + applies, but do not capture it
m = re.search("(?:ab)+(\d+)", "ababab42")
print(m.group(1)) # "42" -> group 1 is the digits, not "ab"المراجع الخلفية
يطابق المرجع الخلفي \1 النص نفسه الذي التقطته مجموعة سابقة. وهذا مفيد للعثور على الكلمات المتكررة.
import re
# Find a word repeated twice in a row
print(re.findall("(\w+) \1", "the the cat cat sat"))
# ["the", "cat"]التطلّع إلى الأمام (?=...)
يؤكّد التطلّع الإيجابي إلى الأمام (?=...) ما يجب أن يأتي لاحقًا، من دون استهلاكه. ولا يكون النص الذي تم التحقّق منه جزءًا من المطابقة.
نطابق هنا رقمًا فقط إذا تبعته القيمة "px".
import re
print(re.findall("\d+(?=px)", "10px 20em 30px"))
# ["10", "30"] -> "20" skipped (not followed by px)التطلّع السلبي إلى الأمام (?!...)
يؤكّد التطلّع السلبي إلى الأمام (?!...) ما يجب ألّا يأتي لاحقًا. نطابق الرقم فقط إذا لم تتبعه القيمة "px".
import re
print(re.findall("\d+(?!px)", "10px 20em 30px"))
# matches numbers not followed directly by pxالتطلّع إلى الخلف (?<=...) و (?<!...)
يؤكّد التطلّع إلى الخلف ما يأتي قبل المطابقة من دون استهلاكه:
(?<=...)إيجابي — يجب أن يسبقه(?<!...)سلبي — يجب ألّا يسبقه
نستخرج هنا مبالغ تسبقها علامة الدولار، من دون التقاط العلامة.
import re
print(re.findall("(?<=\$)\d+", "price $50 and 60 units"))
# ["50"] -> only the amount after $دمج المجموعات وعمليات التطلّع
تجمع أدوات الاستخراج الفعلية بين هذه الأدوات. يستخرج هذا النمط سعرًا مُسمّى يجب أن يسبقه رمز عملة وأن يتبعه جزء عشري:
import re
text = "Total: $1299.99 paid"
m = re.search("(?<=\$)(?P<amount>\d+)\.(?P<cents>\d{2})", text)
print(m.group("amount"), m.group("cents")) # 1299 99اختبار سريع: المجموعات المُسمّاة
تريد استخراج المطابقات باستخدام اسم واضح مثل "year" بدلًا من رقم.
مراجعة: المجموعات وعمليات التطلّع
يمكنكم الآن استخراج بنية دقيقة من النص:
( )مجموعات الالتقاط باستخدامm.group(n)وm.groups()(?P<name>...)مجموعات مُسمّاة باستخدامm.groupdict()(?:...)مجموعات غير ملتقِطة للتجميع المنظّم- مراجع خلفية
\1للتكرارات - التطلّع إلى الأمام
(?=)/(?!)والتطلّع إلى الخلف(?<=)/(?<!)
التالي: جمع كل ذلك لتنظيف النص من أجل الذكاء الاصطناعي.
الأسئلة الشائعة
هل درس «مجموعات الالتقاط والمجموعات المسماة» مجاني؟
نعم — نص درس «مجموعات الالتقاط والمجموعات المسماة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.
ماذا ستتعلم في «مجموعات الالتقاط والمجموعات المسماة»؟
الأقواس للالتقاط، والمجموعات المسماة (?P ...)، وre.fullmatch()، والاستباق والاستدبار. تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟
لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «مجموعات الالتقاط والمجموعات المسماة»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟
نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أنماط Regex وفئات المحارف
- وحدة re: search وmatch وfindall وsub
- مجموعات الالتقاط والمجموعات المسماة
- تنظيف النصوص للذكاء الاصطناعي باستخدام Regex