تعبير Python العادي غير حساس لحالة الأحرف دون re.compile
regex case-sensitive (4)
تمرير re.IGNORECASE
إلى flags
المعلمة من search
أو match
أو sub
:
re.search('test', 'TeSt', re.IGNORECASE)
re.match('test', 'TeSt', re.IGNORECASE)
re.sub('test', 'xxxx', 'Testing', flags=re.IGNORECASE)
في بايثون ، يمكنني تجميع تعبير عادي ليكون غير حساس لحالة الأحرف باستخدام re.compile
:
>>> s = 'TeSt'
>>> casesensitive = re.compile('test')
>>> ignorecase = re.compile('test', re.IGNORECASE)
>>>
>>> print casesensitive.match(s)
None
>>> print ignorecase.match(s)
<_sre.SRE_Match object at 0x02F0B608>
هل هناك طريقة لفعل الشيء نفسه ، ولكن دون استخدام re.compile
. لا أستطيع العثور على أي شيء مثل لاحقة Perl (مثلاً m/test/i
) في الوثائق.
في الواردات
import re
في التهيئة التطبيق:
self.re_test = re.compile('test', re.IGNORECASE)
في وقت التشغيل المعالجة:
if self.re_test.match('TeSt'):
يمكنك أيضًا إجراء عمليات بحث غير حساسة لحالة الأحرف باستخدام البحث / التطابق بدون علامة IGNORECASE (تم اختبارها في Python 2.7.3):
re.search(r'(?i)test', 'TeSt').group() ## returns 'TeSt'
re.match(r'(?i)test', 'TeSt').group() ## returns 'TeSt'
يمكنك أيضًا تعريف حالة الأحرف أثناء عملية تجميع الأنماط:
pattern = re.compile('FIle:/+(.*)', re.IGNORECASE)