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

パターンはOKですが、使い方が間違っています。replaceAll()マッチャー オブジェクトではなく、文字列に対して呼び出されます。

また、一致を繰り返す必要はありません-1つreplaceAllで十分です:

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

ただし、遅延量指定子は必要ありませんが、一致結果には影響しません。

于 2012-07-24T10:43:02.693 に答える