java中的正则表达式问题。 我正在从元素href属性中抓取Id编号。我在字符串中有这样的链接:
<a href="http://www.someplacelol.com/pdf/14669/Whatever/Doesntmatter">Whatever</a>
在'pdf'和斜杠之后出现了我感兴趣的Id号码。 因此,我必须从字符串中的这种url的多个出现中获取所有Id。什么是最好的正则表达式?
提前致谢。
答案 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">
之类的内容不匹配。