猿问

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

在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)。


婷婷同学_
浏览 589回答 3
3回答

侃侃无极

传递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()&nbsp; &nbsp; ## returns 'TeSt're.match(r'(?i)test', 'TeSt').group()&nbsp; &nbsp; &nbsp;## returns 'TeSt'

慕的地6264312

不区分大小写的标记(?i)可以直接合并到regex模式中:>>> import re>>> s = 'This is one Test, another TEST, and another test.'>>> re.findall('(?i)test', s)['Test', 'TEST', 'test']
随时随地看视频慕课网APP
我要回答