تعبير 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)




case-insensitive