【问题标题】:Java - Regex for the given stringJava - 给定字符串的正则表达式
【发布时间】:2011-03-05 23:44:35
【问题描述】:

我有以下html代码段:

        <br>
        Date: 2010-06-20,  1:37AM PDT<br>
        <br>
        Daddy: <a href="...">www.google.com</a>
        <br>

我要提取

Date: 2010-06-20, 1:37AM PDT

Daddy: &lt;a href="..."&gt;www.google.com&lt;/a&gt;

借助 java 正则表达式。

那么我应该使用什么正则表达式?

【问题讨论】:

  • 正则表达式是错误的工作工具。但是,您需要提供更多上下文,然后我们才能给出更合适的答案。这个 HTML 来自哪里?你怎么加载它?完整的 HTML 是什么样子的?你能控制它吗?
  • @BalusC - 带有正则表达式的.split() 在这里可能非常简单,只是空格和&lt;br&gt;,只是一个想法。
  • @Nick:如果 actual HTML 不仅仅是这个“段”,则不会。
  • @BalusC - 同意,希望不是这样,他已经有了这个确切的字符串。

标签: java regex


【解决方案1】:

这应该会给你一个很好的起点:

    String text = 
    "        <br>\n" +
    "        Date: 2010-06-20,  1:37AM PDT<br>   \n" +
    "   <br>    \n" +
    "Daddy: <a href=\"...\">www.google.com</a>   \n" +
    "<br>";

    String[] parts = text.split("(?:\\s*<br>\\s*)+");
    for (String part : parts) {
        System.out.println("[" + part + "]");
    }

这会打印 (as seen on ideone.com):

[]
[Date: 2010-06-20,  1:37AM PDT]
[Daddy: <a href="...">www.google.com</a>]

这使用String[] String.split(String regex)。正则表达式模式是“&lt;br&gt; 中的一个或多个,前后有空格。


番石榴替代品

您也可以使用来自 Guava 的 Splitter。它实际上更具可读性,并且可以omitEmptyStrings()

    Splitter splitter = Splitter.on("<br>").trimResults().omitEmptyStrings();
    for (String part : splitter.split(text)) {
        System.out.println("[" + part + "]");
    }

打印出来:

[Date: 2010-06-20,  1:37AM PDT]
[Daddy: <a href="...">www.google.com</a>]

相关问题

【讨论】:

  • 也许你想要这样的东西? rubular.com/r/wy3b1ABsaC 发表评论,我将详细说明这些方法。
  • 也看看这个:rubular.com/r/mftjWgKWzP告诉我你喜欢哪一个。
  • 我同意。对于这种 html,你不应该使用正则表达式,相反,你有标签“br”的键。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
相关资源
最近更新 更多