我在多行 HTML 文件中查找空 HTML 元素时遇到问题。我的正则表达式是这样的:
Pattern pattern = Pattern.compile("<([a-zA-Z][a-zA-Z0-9]*)[^>]*?>[\\s]*?</\\1>");
Matcher matcher = pattern.matcher(htmlOut);
while (matcher.find())
{
htmlOut = matcher.replaceAll("");
matcher = pattern.matcher(htmlOut);
}
问题是它与任何空标签都不匹配。
仅供引用:相同的正则表达式 <([a-zA-Z][a-zA-Z0-9]*)[^>]*?>[\s]*?</\1>
在崇高文本中工作!
有什么办法吗?
最佳答案
这个模式没问题,但你用错了。 replaceAll()
在字符串上调用,而不是在匹配器对象上调用。
此外,无需迭代匹配项 - 一个 replaceAll
就足够了:
htmlOut = htmlOut.replaceAll("<([a-zA-Z][a-zA-Z0-9]*)[^>]*>\\s*</\\1>", "");
不过,您不需要惰性量词 - 但这不会影响匹配结果。
关于Java 正则表达式模式查找空 HTML/XML 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11629078/