1

如何提取标签之间的文本?

要在标签之间获取文本,下面的代码可以正常工作,

System.out.println("<text>google<text/>".replaceAll("<[^>]*>", "")); // gives google

&lt;我正在为and尝试相同的方法&gt;。我是否缺少以下代码的任何内容?

System.out.println("&lt;aksdk&gt;google&lt;aksdk&gt;".replaceAll("&lt;[^.]*&gt;", "")); 

PS:我没有使用它来进行 html 解析。

4

2 回答 2

4

$1您需要使用方括号来捕获尖括号之间的内容,并通过在替换字符串中使用第 1 组将其放回:

"&lt;aksdk&gt;google&lt;aksdk&gt;".replaceAll("&lt;([^.]*?)&gt;", "$1")

重要提示:使用[^.]*?(而不是[^.]*),因为[^.]*?它是non-greedy,这意味着它不会跳过第一个&gt;并与 last 匹配&gt;,这将使第一个&gt;和第二个&lt;保持不变 - 这不是你想要的。

于 2013-09-08T03:54:57.130 回答
1

您在 中接受了太多字符[^.],因此您将第一个标记的开头与第二个标记的结尾匹配并删除了整个字符串。尝试[^&]

System.out.println("&lt;aksdk&gt;google&lt;aksdk&gt;".replaceAll("&lt;[^&]*&gt;", ""));
于 2013-09-08T03:58:27.143 回答