【问题标题】:JAVA Regex to remove html tag and content [duplicate]JAVA正则表达式删除html标签和内容[重复]
【发布时间】:2012-12-16 22:44:24
【问题描述】:

可能重复:
How to remove HTML tag in Java
RegEx match open tags except XHTML self-contained tags

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

例如,如果 html 是:

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

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

【问题讨论】:

标签: java html regex


【解决方案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

【讨论】:

  • 如果样式属性不包含任何mso- 指令......也许更通用的正则表达式会是有序的。
  • @pap 让我引用 OP:如果标签包含“mso-*”,它必须删除整个标签(打开、关闭和内容)。 我的帖子回答他的问题,我不明白你的评论。
  • 确实你是对的。为我没有正确阅读问题而感到羞耻:)而且我认为您低估了自己,您似乎已经很好地理解了我的评论,只是我不正确;)
  • @pap 这是我礼貌的说法,我认为你的评论是错误的 ;)
猜你喜欢
  • 2015-10-05
  • 1970-01-01
  • 1970-01-01
  • 2012-01-26
  • 1970-01-01
  • 2013-01-07
  • 1970-01-01
  • 2017-08-16
  • 1970-01-01
相关资源
最近更新 更多