为什么 Python 中的正则表达式组没有按预期匹配?

Why do Regex groups in Python not get matched as expected?

Python 在 Python:

中匹配组时似乎有一个相当令人惊讶的行为
>>> re.split("\+|-", "1+2")
['1', '2']

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

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

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

当您添加 () 时,您要求 Python 到 'capture' 拆分中的那个值。

如果您要这样做:

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

然后它会取一个+放在中间。

这是怎么回事,它正在获取所有捕获的分组并将它们放入相关项目之间的数组中,如本例所示:

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