不区分大小写的正则表达式,无需重新编译?

2024-10-17 06:31:24 发布

您现在位置:Python中文网/ 问答频道 /正文

在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)的东西


Tags: testrenoneobjectmatch区分printsre
3条回答

re.IGNORECASE传递给^{}^{}^{}flags参数:

re.search('test', 'TeSt', re.IGNORECASE)
re.match('test', 'TeSt', re.IGNORECASE)
re.sub('test', 'xxxx', 'Testing', flags=re.IGNORECASE)

不区分大小写的标记(?i)可以直接合并到regex模式中:

>>> import re
>>> s = 'This is one Test, another TEST, and another test.'
>>> re.findall('(?i)test', s)
['Test', 'TEST', 'test']

您还可以使用search/match执行不区分大小写的搜索,而不使用IGNORECASE标志(在Python 2.7.3中测试):

re.search(r'(?i)test', 'TeSt').group()    ## returns 'TeSt'
re.match(r'(?i)test', 'TeSt').group()     ## returns 'TeSt'

相关问题 更多 >