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

为什么Python中的正则表达式组没有按预期匹配?,python,regex,regex-group,Python,Regex,Regex Group,在Python中匹配组时,Python似乎有一个相当令人惊讶的行为: >>> re.split("\+|-", "1+2") ['1', '2'] >>> re.split("(\+|-)", "1+2") ['1', '+', '2'] 我还没有找到任何令人满意的解释来解释为什么分组一个表达式会阻止它被匹配,那么这里的问题是什么呢 据英国《每日邮报》报道,在匹配方面绝对没有区别,尽管需要更多的步骤。 添加()时,要求Python在拆分中“捕获”该值 就像

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

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

>>> re.split("(\+|-)", "1+2")
['1', '+', '2']
我还没有找到任何令人满意的解释来解释为什么分组一个表达式会阻止它被匹配,那么这里的问题是什么呢

据英国《每日邮报》报道,在匹配方面绝对没有区别,尽管需要更多的步骤。

添加
()
时,要求Python在拆分中“捕获”该值

就像你要做的那样:

>>> re.split("(a\+|-)", "1a+2")
['1', 'a+', '2']
然后它将获取+并将其放在中间

所发生的情况是,将所有捕获的分组放入相关项之间的数组中,如本例所示:

>>> re.split("(a)(\+|-)", "1a+2")
['1', 'a', '+', '2']
看见和:如果模式中使用了捕获括号,那么模式中所有组的文本也将作为结果列表的一部分返回。