1

我试过restString = restString.replaceAll("\\<.*\\>", "");

restString = restString.replaceAll("\\<[^(\\&gt)]*\\>", "");.

两者似乎都不起作用。我不知道我是否可以表示正则表达式中的含义。

4

2 回答 2

2

要使用正则表达式解决此问题,您需要“环顾四周” - 使用lookbehind 和lookbefore:

restString = restString.replaceAll("(?<=&lt;).*(?=&gt;)", "");

环视表达式将由正则表达式引擎评估,但它们不会成为匹配的一部分。这样就可以删除所有 BETWEEN < 和>

如果它应该是非贪婪的并且能够匹配多行,请使用 anubhava 建议的表达式:

restString = restString.replaceAll("(?s)(?<=&lt;).*?(?=&gt;)", "");

要了解有关环视的更多信息,请访问此页面:http ://www.regular-expressions.info/lookaround.html

于 2013-10-22T18:01:22.780 回答
1

制作你的正则表达式non-greedy

restString = restString.replaceAll("(?s)&lt;.*?&gt;", "");

我也曾经(?s)使点匹配换行符。

于 2013-10-22T17:54:51.460 回答