【发布时间】:2012-02-21 08:11:51
【问题描述】:
看两个例子 re.split() 是如何工作的:
>>> re.split(',', 'a,b')
['a', 'b']
但是
>>> re.split('(,)', 'a,b')
['a', ',', 'b']
为什么我在列表中得到“,”?如何避免?
我在问,因为我想使用类似于 'xy(a|b)cd' 的表达式进行拆分。
【问题讨论】:
看两个例子 re.split() 是如何工作的:
>>> re.split(',', 'a,b')
['a', 'b']
但是
>>> re.split('(,)', 'a,b')
['a', ',', 'b']
为什么我在列表中得到“,”?如何避免?
我在问,因为我想使用类似于 'xy(a|b)cd' 的表达式进行拆分。
【问题讨论】:
使用非捕获组,例如:
re.split('(?:,)', 'a,b')
【讨论】:
之所以如此,是因为它是documented to work that way:
如果pattern中使用了捕获括号,那么中所有组的文本 该模式也作为结果列表的一部分返回。
【讨论】: