ab正则表达式是:(.*)我期待出现:["a","b"]可是结果是:["ab"]
2 回答
忽然笑
TA贡献1806条经验 获得超5个赞
python的正則默認是貪婪(greedy)的(事實上大多數正則的實現都這麼默認)。你的例子中有兩個<\/td>,所以有兩種匹配,匹配到第一個,那就是你期望的結果["a","b"],匹配到第二個,那就是實際的結果,["ab"]。後者比前者長,所以最終匹配結果是第二個。這就是所謂的貪婪模式,找最長的匹配。 你需要的是非貪婪(non-greedy)模式,也叫最小(minimal)模式,也就是匹配盡可能短的字符串。很簡單,只要加上一個?即可,也就是說改成(.*?)<\/td>。 當然,非貪婪可能有性能問題。我不知道python有沒有針對這方面的優化。就你的問題而言,用貪婪模式也可以實現,比如([^<]*)<\/td>。 添加回答
举报
0/150提交取消