我一直都是这样写正则表达式的
<A HREF="([^"]*)" TARGET="_blank">([^<]*)</A>
但是我刚刚学到了这个懒惰模式,并且我可以像这样编写它
<A HREF="(.*?)" TARGET="_blank">(.*?)</A>
使用第二种方法有什么不利之处吗?正则表达式肯定更加紧凑(即使SO更好地解析它)。
编辑:这里有两个最佳答案,它们指出了表达式之间的两个重要差异。 ysth的答案指出了非贪婪/懒惰表达式的一个弱点,其中超链接本身可能包括A标记的其他属性(绝对不好)。Rob Kennedy指出了贪婪表达式的一个弱点,即锚文本不能包括其他标记(绝对不好,因为它也无法获取所有锚文本)......因此,正则表达式是什么样子,看起来相同的懒惰和非懒惰解决方案可能不是语义上等价的。
编辑:Alan M关于表达式相对速度的第三个最佳答案。目前,我会将他的答案标记为最佳答案,这样人们就会给他更多积分 :)