У меня есть регулярное выражение, которое отлично работает в 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'],
и т. Д.
Но в Python 3 это регулярное выражение работает совсем по-другому,
'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', ''],
В общем, в Python 3 каждый символ в части будет разделен на отдельную часть и удален пробелами (включая отсутствие существующих ведущих).и завершающий) станет пустой частью ('') и будет добавлен в список частей.
Я думаю, что это поведение регулярных выражений Python 3 отличается довольно сильно от Python 2, может кто-нибудь сказать мне причину, почему Python 3сильно изменится, и что такое правильное регулярное выражение для разбиения выражения на 5 частей, как в Python 2?