2

我做了一个正则表达式来替换“a”标签中“href”之后的“=”:

output.replaceAll("(<a.*)href=(.*>)", "$1href" + replacemantstring+ "$2");

问题在于它只替换了最后一次出现的“=”在href ...

我做错了什么 ?

4

2 回答 2

2

您需要将通配符从greedy .*更改为non-greedy .*?。这将使您的正则表达式在第一次href=匹配时停止,因此也匹配以下出现。

于 2012-10-13T14:08:07.193 回答
2

如果要将参数中的链接替换hrefnewURL,请使用

output.replaceAll("(?i)(<a[^>]*?\\shref\\s*=)(['"]).*?\\2", "$1$2" + newURL + "$2"); 

编辑:如果你想在标签=后面替换,然后使用href<a>

output.replaceAll("(?i)(<a[^>]*?\\shref\\s*)=", "$1" + replacement); 
于 2012-10-13T14:10:25.310 回答