a b 正则表达式是:(.*)<\/td> 我期待出现:["a","b"]可是结果是:["ab"] 慕运维8079593浏览 1430回答 22回答
忽然笑
python的正則默認是貪婪(greedy)的(事實上大多數正則的實現都這麼默認)。你的例子中有兩個,所以有兩種匹配,匹配到第一個,那就是你期望的結果["a","b"],匹配到第二個,那就是實際的結果,["ab"]。後者比前者長,所以最終匹配結果是第二個。這就是所謂的貪婪模式,找最長的匹配。你需要的是非貪婪(non-greedy)模式,也叫最小(minimal)模式,也就是匹配盡可能短的字符串。很簡單,只要加上一個?即可,也就是說改成(.*?)。當然,非貪婪可能有性能問題。我不知道python有沒有針對這方面的優化。就你的問題而言,用貪婪模式也可以實現,比如([^随时随地看视频慕课网APP相关分类