【问题标题】:Regex for HTML with java.util.regex带有 java.util.regex 的 HTML 正则表达式
【发布时间】:2010-07-16 17:34:29
【问题描述】:

我需要一个用于以下 html 的正则表达式:

<div xmlns="http://www.w3.org/1999/xhtml">    <p/>
  <p/><p/>    <p/>
</div>

这来自一个富文本字段,显然这不是有意义的内容或意味着:空。 我不能在java中说: if (richTextConent == null || richTextContent.length == 0) 因为富文本字段包含一些东西。从语义上讲,上述内容是空的,所以我想到了使用正则表达式。我需要将此 sn-p 与 java.util.regex 匹配

如果sn-p中有一些有意义的东西,比如:

<div xmlns="http://www.w3.org/1999/xhtml"> text<p/>
  <p/><p/>text    <p/>
</div>

比正则表达式不应该匹配。

【问题讨论】:

  • +1 提供更大的图景。我认为会推出比正则表达式更好的解决方案。
  • 这是通过网络、瘦客户端或 Swing 或其他方式完成的吗?
  • 嗯,cms 系统中有一个richtexfield,它以XML 标记的形式提供其内容。我需要知道内容是否为空以抑制其在 jsp 模板中的呈现。正如您从示例中看到的那样,内容不是空的,因为这个第三方 cms 提供了空标签和一个 div。所以我认为正则表达式会很好地找出...
  • 这是否意味着您无法控制 CMS 的界面?如果你这样做了,我可能会建议使用 jQuery 来获取带有文本的子节点,否则我会选择 @BalusC 的答案
  • 我可以控制界面。问题在于似乎有错误。如果我在编辑器中输入一些内容并再次删除它,cms 的 api 仍然会提供这个“空”xml 标记:-( 谢谢你的想法。

标签: java html regex


【解决方案1】:

使用像 Jsoup 这样的 HTML 解析器。

String html1 = "<div xmlns=\"http://www.w3.org/1999/xhtml\">    <p/>  <p/><p/>    <p/></div>";
String html2 = "<div xmlns=\"http://www.w3.org/1999/xhtml\"> text<p/>        <p/><p/>text    <p/>        </div>";

System.out.println(Jsoup.parse(html1).text().isEmpty()); // true
System.out.println(Jsoup.parse(html2).text().isEmpty()); // false

另见:

【讨论】:

  • 哇,我喜欢 Stackoverflow。只用了4分钟就得到了一个合格的答案。我今天将尝试 jsoup。到目前为止谢谢...
猜你喜欢
  • 2018-11-12
  • 1970-01-01
  • 2020-03-08
  • 1970-01-01
  • 2011-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-24
相关资源
最近更新 更多