不区分大小写的正则表达式无需重新编译?
在 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
)的内容。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(11)
将
re.IGNORECASE
传递给 flags 参数"noreferrer">搜索
,匹配
,或sub
:Pass
re.IGNORECASE
to theflags
param ofsearch
,match
, orsub
:您还可以使用不带 IGNORECASE 标志的搜索/匹配来执行不区分大小写的搜索(在 Python 2.7.3 中测试):
You can also perform case insensitive searches using search/match without the IGNORECASE flag (tested in Python 2.7.3):
不区分大小写的标记
(?i)
可以直接合并到正则表达式模式中:The case-insensitive marker,
(?i)
can be incorporated directly into the regex pattern:您还可以在模式编译期间定义不区分大小写:
You can also define case insensitive during the pattern compile:
在导入中
在运行时处理中:
应该提到的是,不使用
re.compile
是一种浪费。 每次调用上面的 match 方法时,都会编译正则表达式。 这在其他编程语言中也是错误的做法。 下面是更好的做法。在应用程序初始化中:
在运行时处理中:
In imports
In run time processing:
It should be mentioned that not using
re.compile
is wasteful. Every time the above match method is called, the regular expression will be compiled. This is also faulty practice in other programming languages. The below is the better practice.In app initialization:
In run time processing:
要执行不区分大小写的操作,请提供 re.IGNORECASE
,如果我们想替换与大小写匹配的文本...
To perform case-insensitive operations, supply re.IGNORECASE
and if we want to replace text matching the case...
对于不区分大小写的正则表达式(Regex):
有两种方法可以添加代码:
flags=re.IGNORECASE
不区分大小写的标记
(?i)
For Case insensitive regular expression(Regex):
There are two ways by adding in your code:
flags=re.IGNORECASE
The case-insensitive marker
(?i)
如果您想替换但仍保留之前 str 的风格。 有可能的。
例如:突出显示字符串“test asdasd TEST asd tEst asdasd”。
测试 asdasd 测试 asd tEst asdasd
If you would like to replace but still keeping the style of previous str. It is possible.
For example: highlight the string "test asdasd TEST asd tEst asdasd".
test asdasd TEST asd tEst asdasd
(?i)
使用以下有效标志匹配模式的其余部分: i 修饰符:不敏感。 不区分大小写的匹配(忽略 [a-zA-Z] 的大小写)(?i)
match the remainder of the pattern with the following effective flags: i modifier: insensitive. Case insensitive match (ignores case of [a-zA-Z])我建议使用
(?i:string_region_to_ignore_case)
而不是(?i)
。 这种方法允许人们以一种更挑剔但更清晰的方式处理区分大小写的问题。 例如:I would recommend using
(?i:string_region_to_ignore_case)
rather than(?i)
. This method allows one to deal with case sensitivity in a more picky yet clear manner. For instance: