Python在Python中匹配组时似乎有一个相当令人惊讶的行为:
>>> re.split("\+|-", "1+2")
['1', '2']
>>> re.split("(\+|-)", "1+2")
['1', '+', '2']
我还没有找到任何令人满意的解释,为什么分组单个表达式会阻止它匹配,那么这里的问题是什么?
根据regex101,在匹配方面绝对没有区别,尽管需要更多步骤。
答案 0 :(得分:2)
当您添加()
时,您要求Python在分割中“捕获”该值。
就像你要做的那样:
>>> re.split("(a\+|-)", "1a+2")
['1', 'a+', '2']
然后它会取一个+并将它放在中心。
正在发生的事情是将所有捕获的分组放在相关项之间的数组中,如下例所示:
>>> re.split("(a)(\+|-)", "1a+2")
['1', 'a', '+', '2']