dgu*_*uan 5 python regex python-2.7 python-3.x
我有一个在 Python 2 中完美运行的正则表达式:
parts = re.split(r'\s*', re.sub(r'^\s+|\s*$', '', expression)) # split expression into 5 parts
Run Code Online (Sandbox Code Playgroud)
这个正则表达式将一个表达式分成 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'],
Run Code Online (Sandbox Code Playgroud)
等等。
但是在 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', ''],
Run Code Online (Sandbox Code Playgroud)
一般来说,在 Python 3 中,part 中的每个字符都会被拆分成一个单独的部分,删除的空格(包括不存在的前导和尾随)将成为一个空的 part('') 并添加到 part 列表中。
我认为这个 Python 3 regex 行为与 Python 2 有很大不同,谁能告诉我 Python 3 会改变这么多的原因,以及像 Python 2 一样将表达式分成 5 部分的正确正则表达式是什么?
| 归档时间: |
|
| 查看次数: |
1973 次 |
| 最近记录: |