如何在标签之间提取文字?
在标签之间获取文本,下面的代码工作正常,
System.out.println("<text>google<text/>".replaceAll("<[^>]*>", "")); // gives google
我正在为<
和>
尝试相同的操作。我错过了以下代码的任何内容吗?
System.out.println("<aksdk>google<aksdk>".replaceAll("<[^.]*>", ""));
PS:我没有将它用于html解析。
答案 0 :(得分:3)
您需要使用括号来捕捉尖括号之间的内容,并通过在替换字符串中使用$1
引用组1来将其放回去:
"<aksdk>google<aksdk>".replaceAll("<([^.]*?)>", "$1")
重要说明:使用[^.]*?
(而不是[^.]*
),因为[^.]*?
非贪婪,这意味着它不会跳过第一个>
并与上一个>
匹配,这将使第一个>
和第二个<
保持完整 - 而不是您想要的。
答案 1 :(得分:1)
您在[^.]
中接受了太多字符,因此您将第一个标记的开头与第二个标记的结尾相匹配,并删除整个字符串。试试[^&]
:
System.out.println("<aksdk>google<aksdk>".replaceAll("<[^&]*>", ""));