0

可能重复:
如何删除 Java
RegEx 中的 HTML 标记匹配打开的标记,XHTML 自包含标记除外

我想删除特定的 HTML 标记及其内容。

例如,如果 html 是:

<span style='font-family:Verdana;mso-bidi-font-family:
"Times New Roman";display:none;mso-hide:all'>contents</span>

如果标签包含“mso-*”,则必须删除整个标签(开始、结束和内容)。

4

1 回答 1

1

正如Dave Newton在他的评论中指出的那样,html 解析器是这里的方法。如果您真的想以艰难的方式做到这一点,那么这里有一个有效的正则表达式:

    String html = "FOO<span style='font-family:Verdana;mso-bidi-font-family:"
        + "\"Times New Roman\";display:none;mso-hide:all'>contents</span>BAR";
    // regex matches every opening tag that contains 'mso-' in an attribute name
    // or value, the contents and the corresponding closing tag
    String regex = "<(\\S+)[^>]+?mso-[^>]*>.*?</\\1>";
    String replacement = "";
    System.out.println(html.replaceAll(regex, replacement)); // prints FOOBAR
于 2013-01-02T15:19:44.313 回答