Java Regex取代了Substring

时间:2014-06-05 10:35:20

标签: java regex

String expression = "${abcd?string(datePattern)}\" href=\"\">From Date</a>&nbsp;-&nbsp;${dasfsaf?string(datePattern)}\" href=\"\">To Date</a>";
expression=expression.replaceAll("(})(\".+</a>)(.+?)", "$1$3");
System.out.println(expression);

即将推出的输出是:

${abcd?string(datePattern)}&nbsp;-&nbsp;${dasfsaf?string(datePattern)}" href="">To Date</a>

预期的输出是:

${abcd?string(datePattern)}&nbsp;-&nbsp;${dasfsafT?string(datePattern)}

问题是它只替换了第一个{</a>之间的内容,而不是之后的内容。我希望在这两个内容之间替换所有内容..

2 个答案:

答案 0 :(得分:1)

在你的正则表达式中,你需要在</a>之后有(.+?)的内容(.*?),你可以将其更改为.+,它应该可以正常工作,因为你不再需要之后的任何事情和你的第二部分都可以匹配(或者,它似乎没有任何作用,所以我只是删除它)。另外,您可能不希望贪婪量词位于中间.+?,因此将其更改为lazy expression=expression.replaceAll("(})(\".+?</a>)", "$1");

{{1}}

答案 1 :(得分:-1)

不是确切的正则表达式答案,但您可以简单地重复replaceAll调用。这就是我在没有时间的情况下做的事情,如果它不会成本高昂。