繁体   English   中英

Java Regex替换子字符串

[英]Java Regex to replace Substring

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>之间的内容,而不替换之后的内容。 我希望在这两者之间替换所有内容。

在您的正则表达式中,您需要在</a>之后加上(.+?) ,然后将其更改为(.*?) ,它应该可以工作,因为您以后不再需要任何东西,并且您的第二部分可以匹配(或者,它似乎没有任何作用,所以我只删除它)。 另外,您可能不希望贪婪的量词位于.+中间,因此将其更改为lazy .+?

expression=expression.replaceAll("(})(\".+?</a>)", "$1");

不是确切的正则表达式答案,但是您可以重复重复replaceAll调用。 这是我在没有时间并且不花很多钱的时候要做的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM