【问题标题】:Trying to parse links in an HTML directory listing using Java regex尝试使用 Java 正则表达式解析 HTML 目录列表中的链接
【发布时间】:2011-02-02 07:24:19
【问题描述】:

好的,我知道每个人都会告诉我不要使用 RegEx 来解析 HTML,但我在 Android 上编程并且没有准备好访问 HTML 解析器(我知道)。此外,这是服务器生成的 HTML,应该比用户生成的 HTML 更加一致。

正则表达式如下所示:

Pattern patternMP3 = Pattern.compile(
        "<A HREF=\"[^\"]+.+\\.mp3</A>",
        Pattern.CASE_INSENSITIVE |
        Pattern.UNICODE_CASE);
Matcher matcherMP3 = patternMP3.matcher(HTML);
while (matcherMP3.find()) { ... }

输入的 HTML 都在一行上,这导致了问题。当 HTML 位于不同的行时,此模式有效。有什么建议吗?

【问题讨论】:

  • 你能举一个链接的例子吗?

标签: java html android regex


【解决方案1】:

你不应该匹配 '.+',因为你已经得到了 [^\"]+(这对你的特定情况更好)。

试试:

"<A HREF=\"[^\"]+\\.mp3\"</A>"

另外,不要忘记 mp3 后面的双引号。

【讨论】:

  • 没有得到任何匹配。请注意,我正在尝试捕获
【解决方案2】:

正则表达式

"<A HREF=\"([^\"]+)\"[^>]*>([^<]+?)\\.mp3</A>"

应该匹配您的链接,并在其组中包含链接和文件名。 但请注意,href 的参数不一定需要在 html 中用引号引起来。 (或者,如果需要,浏览器和开发人员都不知道 =)。 )

【讨论】:

    【解决方案3】:

    供您参考,在 Android 上,您可以使用 org.cyberneko.html.parsers.SAXParser、org.xml.sax.* 和 org.dom4j.* 的组合“正确”解析 HTML。

    http://sourceforge.net/projects/nekohtml

    http://www.saxproject.org

    http://dom4j.sourceforge.net

    【讨论】:

      猜你喜欢
      • 2011-08-18
      • 1970-01-01
      • 2018-09-10
      • 2010-12-24
      • 1970-01-01
      • 1970-01-01
      • 2014-06-08
      相关资源
      最近更新 更多