为什么 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']
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']