首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在python re中通过字符串修饰符否定缺省的IGNORECASE

如何在python re中通过字符串修饰符否定缺省的IGNORECASE
EN

Stack Overflow用户
提问于 2019-06-16 03:06:52
回答 1查看 69关注 0票数 1

我有一个脚本,它在文本文件中搜索与作为命令行参数传入的regex匹配的行。

默认情况下,脚本执行不区分大小写的搜索(我希望这样做)。

如何在regex参数中传入-i标志,以强制执行区分大小写的搜索。我已经试过下面的方法,但我想不通。

它总是执行不区分大小写的搜索。

我已经在python 2.7和3.6上尝试过了。

代码语言:javascript
复制
>>> import re
>>> res1 = 'TEST'
>>> res2 = 'test'
>>> res3 = '(?-i:)TEST'
>>> res4 = '(?-i:)TeSt'
>>> res5 = '((?-i:)TeSt)'
>>>
>>> string = 'TeSt'
>>>
>>> def str_match(re_str = ''):
...     print(re.search(r'(?i)' + re_str, string))
...
>>>
>>> str_match(res1)
<_sre.SRE_Match object; span=(0, 4), match='TeSt'>
>>>
>>> str_match(res2)
<_sre.SRE_Match object; span=(0, 4), match='TeSt'>
>>>
>>> str_match(res3)
<_sre.SRE_Match object; span=(0, 4), match='TeSt'>
>>>
>>> str_match(res4)
<_sre.SRE_Match object; span=(0, 4), match='TeSt'>
>>>
>>> str_match(res5)
<_sre.SRE_Match object; span=(0, 4), match='TeSt'>
>>>
>>>
>>>
>>>
>>> def str_match_2(re_str = ''):
...     print(re.search(re_str, string, re.I))
...
>>>
>>> str_match_2(res1)
<_sre.SRE_Match object; span=(0, 4), match='TeSt'>
>>>
>>> str_match_2(res2)
<_sre.SRE_Match object; span=(0, 4), match='TeSt'>
>>>
>>> str_match_2(res3)
<_sre.SRE_Match object; span=(0, 4), match='TeSt'>
>>>
>>> str_match_2(res4)
<_sre.SRE_Match object; span=(0, 4), match='TeSt'>
>>>
>>> str_match_2(res5)
<_sre.SRE_Match object; span=(0, 4), match='TeSt'>
>>>
>>> str_match('none')
None
>>>
>>> str_match_2('none')
None
EN

回答 1

Stack Overflow用户

发布于 2019-06-16 03:27:18

我想我想通了。应该更仔细地阅读文档。

需要像这样格式化正则表达式:

代码语言:javascript
复制
res5 = '(?-i:TeSt)'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56613384

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档