如何让Python正则表达式在模式的一部分忽略大小写,而不是整个表达式?

8 投票
2 回答
2781 浏览
提问于 2025-04-16 19:00

假设我有一个字符串,里面有 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模块不支持作用域标志,但有一个替代的正则表达式实现是支持的:

http://pypi.python.org/pypi/regex

撰写回答