اذهب إلى المحتوى

السؤال

نشر

أريد استخدام مدخلات من المستخدم كنمط regex للبحث في بعض النصوص. الكود الخاص بي يعمل بدون مشكلة، لكن كيف يمكنني التعامل مع الحالات التي يضع فيها المستخدم أحرفًا لها معنى في regex؟

على سبيل المثال إن قام المستخدم بإدخال نص كالتالي:

(A)

في هذه الحالة سوف يتم التعامل مع هذا النص على أنه مجموعة group في regex كيف يمكنني أن أقوم بإستخدام مدخلات مختلفة كالمثال السابق في regex بدون مشكلة؟

Recommended Posts

  • 2
نشر

يمكنك أن تقوم بعمل دالة تقوم بالمرور على كل حرف من مدخلات المستخدم وتقوم هذه الدالة بإضافة علامة backslash \ قبل كل حرف أو رمز غير الحروف اللاتينية، وتوجد دالة تقوم بذلك بشكل إفتراضي في مكتبة re وهي دالة escape ويمكنك أن تستعمل الدالة كالتالي:

userInput = input("Write a word: ")	# Input: ^a.*$
escapedText = re.escape(userInput)	# Output: \^a\.\*\$

ملاحظة عند طباعة المتغير escapedText ستكون النتيجة كالتالي:
 

\\^a\\.\\*\\$

يتم إضافة علامة \ إضافية قبل كل علامة \، ويمكنك الإطلاع على هذه الإجابة لمعرفة سبب إضافة علامة backslash إضافية من هنا

  • 0
نشر

تعرف escape كالتالي:

escape(string)
Return string with all non-alphanumerics backslashed; this is useful if you want to match an arbitrary literal string that may have regular expression metacharacters in it.

وبالتالي فهي ترجع القيم غير الرقمية و الحرفية في شكل string مسبوقة ب \. وبذلك تفيد في حال التعامل مع نصوص قد تحتوى على علامات خاصة.

مثال:

import re
re.escape('^a.*$')

# \\^a\\.\\*\\$

والناتج في هذه الحالة يكون: \\^a\\.\\*\\$ هو نفس القيمة المدخلة مسبوقة بعلامات ال backslash في حال الحروف الخاصة.

 

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...