为什么Python中的Regex组不能按预期匹配?

时间:2017-04-04 16:09:01

标签: python regex regex-group

Python在Python中匹配组时似乎有一个相当令人惊讶的行为:

>>> re.split("\+|-", "1+2")
['1', '2']

>>> re.split("(\+|-)", "1+2")
['1', '+', '2']

我还没有找到任何令人满意的解释,为什么分组单个表达式会阻止它匹配,那么这里的问题是什么?

根据regex101,在匹配方面绝对没有区别,尽管需要更多步骤。 regex test

1 个答案:

答案 0 :(得分:2)

当您添加()时,您要求Python在分割中“捕获”该值。

就像你要做的那样:

>>> re.split("(a\+|-)", "1a+2")
['1', 'a+', '2']

然后它会取一个+并将它放在中心。

正在发生的事情是将所有捕获的分组放在相关项之间的数组中,如下例所示:

>>> re.split("(a)(\+|-)", "1a+2")
['1', 'a', '+', '2']