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

ab
正则表达式是:(.*)<\/td>
我期待出现:["a","b"]
可是结果是:["ab"]
慕运维8079593
浏览 1430回答 2
2回答

忽然笑

python的正則默認是貪婪(greedy)的(事實上大多數正則的實現都這麼默認)。你的例子中有兩個,所以有兩種匹配,匹配到第一個,那就是你期望的結果["a","b"],匹配到第二個,那就是實際的結果,["ab"]。後者比前者長,所以最終匹配結果是第二個。這就是所謂的貪婪模式,找最長的匹配。你需要的是非貪婪(non-greedy)模式,也叫最小(minimal)模式,也就是匹配盡可能短的字符串。很簡單,只要加上一個?即可,也就是說改成(.*?)。當然,非貪婪可能有性能問題。我不知道python有沒有針對這方面的優化。就你的問題而言,用貪婪模式也可以實現,比如([^
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript