0

我在多行 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>适用于崇高的文本!

有什么办法吗?

4

1 回答 1

3

模式没问题,但你用错了。replaceAll()在字符串上调用,而不是在匹配器对象上调用。

此外,无需遍历匹配项 - 一个replaceAll就足够了:

htmlOut = htmlOut.replaceAll("<([a-zA-Z][a-zA-Z0-9]*)[^>]*>\\s*</\\1>", "");

不过,您不需要惰性量词 - 但这不会影响匹配结果。

于 2012-07-24T10:43:02.693 回答