我有一个正则表达式,它在Python 2中运行得非常好:
parts = re.split(r'\s*', re.sub(r'^\s+|\s*$', '', expression)) # split expression into 5 parts
此正则表达式将表达式拆分为5个部分,例如,
'a * b = c' will be split into ['a', '*', 'b', '=', 'c'],
'11 + 12 = 23' will be split into ['11', '+', '12', '=', '23'],
'ab - c = d' will be split into ['ab', '-', 'c', '=', 'd'],
等
但是在Python3中,这个正则表达式的工作方式完全不同,
'a * b = c' will be split into ['', 'a','', '*', '', 'b','', '=', '', 'c', ''],
'11 + 12 = 23' will be split into ['', '1', '1', '', '+', '', '1', '2', '', '=', '', '2', '3', ''],
'ab - c = d' will be split into ['', 'a', 'b', '', '-', '', 'c', '', '=', '', 'd', ''],
通常,在Python3中,一个部分中的每个字符都将被拆分为一个单独的部分,删除的空格(不包括任何现有的前导和尾随)将成为一个空部分(“”),并将添加到部分列表中。
我认为Python3的正则表达式行为与Python2有很大的不同,有谁能告诉我为什么Python3会有这么大的变化,以及什么是正确的正则表达式,可以像Python2那样将表达式拆分为5个部分?