为什么第一个代码块的1不能输出?(经测试和1、2顺序无关)第二个代码块在12之间加了空格才输出了1。执行逻辑是什么?
#第一个代码块
pattern = '([21])*'
re.findall(pattern,'123')
[out] ['2', '', '']
#第二个代码块
pattern = '([21])*'
re.findall(pattern,'1 23')
[out]['1', '', '2', '', '']
'([21])*' 是匹配连续0个或多个“1”或“2”,注意*在()外面,这样每匹配一个()中的字符都更新一次这个()子匹配的结果。最终这个子匹配只会保留最后一次的结果。
把*放在()里面就好了'([21]*)'