为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

婷婷同学_ 2019-10-24 14:06:32
在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)。
查看完整描述

3 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

传递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)


查看完整回答
反对 回复 2019-10-24
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

您还可以使用不带IGNORECASE标志的搜索/匹配执行不区分大小写的搜索(在Python 2.7.3中进行了测试):


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

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


查看完整回答
反对 回复 2019-10-24
?
慕的地6264312

TA贡献1817条经验 获得超6个赞

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


>>> import re

>>> s = 'This is one Test, another TEST, and another test.'

>>> re.findall('(?i)test', s)

['Test', 'TEST', 'test']


查看完整回答
反对 回复 2019-10-24
  • 3 回答
  • 0 关注
  • 543 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信