在Python中,我可以使用以下命令编译正则表达式以区分大小写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的i
后缀(例如m/test/i
).
传递re.IGNORECASE
到flags
的PARAM search
,match
或sub
:
re.search('test', 'TeSt', re.IGNORECASE) re.match('test', 'TeSt', re.IGNORECASE) re.sub('test', 'xxxx', 'Testing', flags=re.IGNORECASE)
您还可以使用搜索/匹配执行不区分大小写的搜索,而不使用IGNORECASE标志(在Python 2.7.3中测试):
re.search(r'(?i)test', 'TeSt').group() ## returns 'TeSt' re.match(r'(?i)test', 'TeSt').group() ## returns 'TeSt'
不区分大小写的标记(?i)
可以直接合并到正则表达式模式中:
>>> import re >>> s = 'This is one Test, another TEST, and another test.' >>> re.findall('(?i)test', s) ['Test', 'TEST', 'test']
您还可以在模式编译期间定义不区分大小写:
pattern = re.compile('FIle:/+(.*)', re.IGNORECASE)