تقنية

** مع match في بايثون: هل تطابق أي عمق؟

نجمتان ومكوّن وسط واحد
تفسير توضيحي [1] [2]

** مع match لا تطابق أي عمق هنا. [1] [2]

الخلاصة السريعة

لا؛ النجمتان لا تمنحان تكرارًا هنا. [1] [2]

  • ** هنا مثل * غير التكرارية. [1] [2]
  • canopy/**/bud.dat هو النمط. [1] [2]
  • مكوّن وسط واحد: True؛ مكوّنان: False. [1] [2]
  • canopy/*/*/bud.dat يقبل المثال الأعمق. [1] [2]
  • CPython 3.12.14؛ حساسية صريحة؛ بلا ملفات. [1] [2]

المثال

from pathlib import PurePosixPath as P
pattern="canopy/**/bud.dat"
for text in ("canopy/branch/bud.dat","canopy/twig/branch/bud.dat"):
 print(P(text).match(pattern,case_sensitive=True))

[1] [2]

مقارنة بالنجمة

النتيجة: True ثم False؛ استبدال ** بـ* يعطي القيمتين نفسيهما. [1] [2]

رفض عمق إضافي وقبول مكوّنين صريحين
تفسير توضيحي [1] [2]

التحكم المطلق بالنمط /canopy/**/bud.dat يعطي الحد نفسه. [1] [2]

حدود المثال

أسماء نصية مؤلفة؛ لا بحث بملفات ولا اختبار glob أو full_match. [1] [2]

المراجع

  1. Python 3.12: nonrecursive match
  2. CPython 3.12.14: component matching
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

للتوسع: بحث عن لغات البرمجة

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