Python 正则表达式在 2.6 中不区分大小写的分割

7 投票
3 回答
4400 浏览
提问于 2025-04-17 11:00

我有一段在Python 2.7中能正常运行的代码:

entry_regex = '(' + search_string + ')'
entry_split = re.split(entry_regex, row, 1, re.IGNORECASE)

我需要让它在Python 2.6和2.7中都能工作,但在Python 2.6中,re.split这个函数不支持第四个参数(re.IGNORECASE)。有没有什么办法可以解决这个问题?谢谢!

3 个回答

0

哦,我自己找到了,可以把它编译成一个正则表达式对象:

entry_regex = re.compile('(' + search_string + ')', re.IGNORECASE)
entry_split = entry_regex.split(row, 1)
3

使用 re.compile() 创建一个 re.RegexObject 对象,然后调用它的 split() 方法。

示例:

>>> re.compile('XYZ', re.IGNORECASE).split('fooxyzbar')
['foo', 'bar']
15

你只需要在正则表达式前面加上 (?i) 就可以让它不区分大小写了:

>>> import re
>>> reg = "(foo)(?i)"
>>> re.split(reg, "fOO1foo2FOO3")
['', 'fOO', '1', 'foo', '2', 'FOO', '3']

撰写回答