Java正则表达式,捕获格式错误的html

我需要解析latest-all.json.bz2超链接29-Oct-2019 15:36之后的日期 它来自以下网站:https://dumps.wikimedia.org/wikidatawiki/entities/

如果您查看网站源HTML:

<a href="latest-all.json.bz2">latest-all.json.bz2</a>                                29-Oct-2019 15:36         42621256074
<a href="latest-all.json.gz">latest-all.json.gz</a>                                 29-Oct-2019 11:51         63776436005
<a href="latest-all.nt.bz2">latest-all.nt.bz2</a>                                  30-Oct-2019 22:46         84032013058
<a href="latest-all.nt.gz">latest-all.nt.gz</a>                                   30-Oct-2019 13:12        108976436346
<a href="latest-all.ttl.bz2">latest-all.ttl.bz2</a>                                 30-Oct-2019 15:43         52462636586

您将看到没有与之关联的标签,因此我无法使用Jsoup捕获它。相反,我尝试使用此reg ex:

String html = this.doc.html();
        String patternString = "(latest-all.json.gz<\/a>)(.*)";
        Pattern pattern = Pattern.compile(patternString);
        Matcher matcher = pattern.matcher(html);
        System.out.println(matcher.group(0));

,但不捕获日期。有人可以建议我匹配所需日期的正则表达式吗?

编辑:也尝试过(latest[-]all[.]json[.]bz2</a>)[ ]*(.*),但不起作用

caowei5323013 回答:Java正则表达式,捕获格式错误的html

查看您当前的正则表达式:

String patternString = "(latest-all\\.ttl\\.gz<\\/a>)(.*)";

这与latest-all.ttl.gz<\/a>形式的字符串匹配,后跟一些我不认为是您想要的东西。

首先,在您共享的源HTML中,没有出现“ latest-all.ttl.gz”(我相信您是想寻找“ latest-all.json.bz2”)。其次,正斜杠不需要在正则表达式中转义。

因此,考虑到这一点,应该解决这个问题的正则表达式是:

String patternString = "(latest-all\\.json\\.bz2</a>)[\\n]*(.*)";

(我添加了[\\n]*部分,以排除<a>标签和您的日期之间的任何新行)。

,

您可以使用这样的正则表达式:

\S+ \d{2}:\d{2}

Working demo

本文链接:https://www.f2er.com/3164286.html

大家都在问