正则表达式href解析

时间:2012-08-03 20:41:28

标签: java regex

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

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

在'pdf'和斜杠之后出现了我感兴趣的Id号码。 因此,我必须从字符串中的这种url的多个出现中获取所有Id。什么是最好的正则表达式?

提前致谢。

2 个答案:

答案 0 :(得分:0)

如果您知道网址就是这样,那么您的正则表达式可以是:

someplacelol\\.com/pdf/([0-9]+)/

答案 1 :(得分:0)

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

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

第一组将包含网址。

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

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

此外,如果由于一些奇怪的原因,一个元素有2个hrefs,只会抓取第一个。如果你关心的话,你可以解决这个问题。

修改:在<a之后添加了空格要求,因此它与<asdffsdfsfg href="lol">之类的内容不匹配。