Java 正则表达式模式查找空 HTML/XML 元素

标签 java html regex

我在多行 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/

相关文章:

javascript - 暗示特定位置条件的可拖动用户界面

R gsub/str_replace 返回反斜杠

regex - Ruby - 仅匹配和替换电子邮件中的特定字符

javascript - html5 canvas调整图片大小使用的算法是什么?

javascript - 可滚动时隐藏水平滚动条

java - 如何转义Java正则表达式中的字符

java - Spring MVC : ServletContext in JUnit Test?

java - 输入JTextField后如何实时检查异常

Java 日历将时间设置为 UTC 前一天的凌晨 12 点

java - 使用矩形 2D 绘制具有不同方向的不同大小的矩形