weixin_47426400
荔枝锦
采纳率50%
2021-02-24 18:34

求大神解答?这个执行逻辑

已采纳

 为什么第一个代码块的1不能输出?(经测试和1、2顺序无关)第二个代码块在12之间加了空格才输出了1。执行逻辑是什么?

#第一个代码块
pattern = '([21])*'
re.findall(pattern,'123')

[out]  ['2', '', '']
#第二个代码块
pattern = '([21])*'
re.findall(pattern,'1 23')

[out]['1', '', '2', '', '']

 

 

 

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

1条回答

  • jslang 天际的海浪 2月前

    '([21])*' 是匹配连续0个或多个“1”或“2”,注意*在()外面,这样每匹配一个()中的字符都更新一次这个()子匹配的结果。最终这个子匹配只会保留最后一次的结果。
    把*放在()里面就好了'([21]*)'
     

    点赞 1 评论 复制链接分享