0

java中的一个正则表达式问题。我正在从元素 href 属性中抓取 ID 编号。我在字符串中有一堆这样的链接:

<a href="http://www.someplacelol.com/pdf/14669/Whatever/Doesntmatter">Whatever</a>

在“pdf”和斜杠之后是一个我感兴趣的 ID 号。所以我必须从字符串中多次出现的这种 url 中获取所有 ID。什么是最好的正则表达式?

提前致谢。

4

2 回答 2

0

如果您知道 url 正是这样,您的正则表达式可以是:

someplacelol\\.com/pdf/([0-9]+)/
于 2012-08-03T20:44:15.580 回答
0

我不是正则表达式艺术家,但您应该能够通过以下方式从元素中获取 url:

\<a\s.*?href=(?:\"([\w\.:/?=&#%_\-]*)\"|([^\"][\w\.:/?=&#%_\-]*[^\"\>])).*?\>

第一组将包含 URL。

从那里你应该能够毫不费力地提取数字。我在此页面的源代码上测试了该链接,它能够正确识别所有as 中的所有 HREFS。

请不要评论和说It breaks for <a id="<<<>><><<>>href=" href="<a href=">,因为 OP 在他对问题的描述中提供了对 HTTP 标准的荒谬滥用,例如这个在他的跟踪案例中不会出现。

此外,如果出于某种奇怪的原因,一个元素有 2 个 href,则只会抓取第一个。如果你关心的话,你可能会解决这个问题。

编辑:在之后添加了空格要求,<a因此它不会匹配<asdffsdfsfg href="lol">.

于 2012-08-03T21:20:19.707 回答