如何让Python正则表达式在模式的一部分忽略大小写,而不是整个表达式?
假设我有一个字符串,里面有 foobar fooBAR FOObar FOOBAR
,我想找出所有包含不区分大小写的 "foo" 或 "FOO",但是后面必须跟一个小写的 "bar" 的情况。在这种情况下,re.findall
应该返回 ['foobar', 'FOObar']
。
对于这个问题的一个被接受的回答提到,在 C# 中可以用 (?i)foo(?-i)bar
来实现,但在 Python 中会出现无效表达式的错误。
那么,Python 的正则表达式库支持这样的功能吗?
2 个回答
7
Python不支持以相同的方式禁用标志;你需要用不同的方法来处理这个问题。
>>> re.match('[Ff][Oo]{2}bar', 'Foobar')
<_sre.SRE_Match object at 0x7eff94dac920>
4
re模块不支持作用域标志,但有一个替代的正则表达式实现是支持的: