String expression = "${abcd?string(datePattern)}\" href=\"\">From Date</a> - ${dasfsaf?string(datePattern)}\" href=\"\">To Date</a>";
expression=expression.replaceAll("(})(\".+</a>)(.+?)", "$1$3");
System.out.println(expression);
即将推出的输出是:
${abcd?string(datePattern)} - ${dasfsaf?string(datePattern)}" href="">To Date</a>
预期的输出是:
${abcd?string(datePattern)} - ${dasfsafT?string(datePattern)}
问题是它只替换了第一个{
和</a>
之间的内容,而不是之后的内容。我希望在这两个内容之间替换所有内容..
答案 0 :(得分:1)
在你的正则表达式中,你需要在</a>
之后有(.+?)
的内容(.*?)
,你可以将其更改为.+
,它应该可以正常工作,因为你不再需要之后的任何事情和你的第二部分都可以匹配(或者,它似乎没有任何作用,所以我只是删除它)。另外,您可能不希望贪婪量词位于中间.+?
,因此将其更改为lazy expression=expression.replaceAll("(})(\".+?</a>)", "$1");
{{1}}
答案 1 :(得分:-1)
不是确切的正则表达式答案,但您可以简单地重复replaceAll调用。这就是我在没有时间的情况下做的事情,如果它不会成本高昂。