为了账号安全,请及时绑定邮箱和手机立即绑定

python 正则如何匹配最近的字符

python 正则如何匹配最近的字符

青春有我 2019-04-09 20:23:41
ab正则表达式是:(.*)我期待出现:["a","b"]可是结果是:["ab"]
查看完整描述

2 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

python的正則默認是貪婪(greedy)的(事實上大多數正則的實現都這麼默認)。
你的例子中有兩個<\/td>,所以有兩種匹配,匹配到第一個,那就是你期望的結果["a","b"],匹配到第二個,那就是實際的結果,["ab"]。後者比前者長,所以最終匹配結果是第二個。這就是所謂的貪婪模式,找最長的匹配。
你需要的是非貪婪(non-greedy)模式,也叫最小(minimal)模式,也就是匹配盡可能短的字符串。很簡單,只要加上一個?即可,也就是說改成(.*?)<\/td>。
當然,非貪婪可能有性能問題。我不知道python有沒有針對這方面的優化。就你的問題而言,用貪婪模式也可以實現,比如([^<]*)<\/td>。
                            
查看完整回答
反对 回复 2019-04-09
  • 2 回答
  • 0 关注
  • 507 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信