تقنية

fnmatch في بايثون: هل النجمة تتوقف عند الشرطة المائلة؟

النجمة تطابق قطعة تضم شرطة مائلة
مطابقة نص. [1] [2]

نمرر نصًا مؤلفًا؛ لا نبحث في مجلد. [1] [2]

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

لا؛ النجمة تطابق هنا نصًا يشمل /. [1] [2]

  • النص هو box/deep/leaf.txt. [1] [2]
  • النمط box/*.txt يعطي True. [1] [2]
  • النمط box/?.txt يعطي False؛ ? لمحرف واحد. [1] [2]
  • fnmatchcase يطابق النص بحساسية حالة الأحرف. [1] [2]
  • اختبرنا 3.12.14؛ المطابقة لا تثبت وجود ملف. [1] [2]

المثال

import fnmatch as f
s='box/deep/leaf.txt'
print(f.fnmatchcase(s,'box/*.txt'))
print(f.fnmatchcase(s,'box/?.txt'))

[1] [2]

ماذا شملت النجمة؟

النجمة هنا شملت deep/leaf؛ ففاصل الاسم ليس خاصًا لهذه الوحدة. أما علامة السؤال فلا تكفي لهذه القطعة الطويلة. هذه أنماط محارف بديلة، وليست تعبيرات نمطية نكتبها مباشرة. [1] [2]

علامة السؤال لا تطابق القطعة الطويلة
محرف واحد. [1] [2]

حدود الفحص

إذا بدلنا النص إلى box/a.txt يصدق النمطان. ومع box/.txt يصدق الأول وحده؛ النجمة تقبل القطعة الفارغة. مررنا سلاسل فقط ولم نسرد ملفات؛ لا نستنتج قواعد توسيع المسارات من نتيجة هذه المطابقة. [1] [2]

المراجع

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

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

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