java中的一个正则表达式问题。我正在从元素 href 属性中抓取 ID 编号。我在字符串中有一堆这样的链接:
<a href="http://www.someplacelol.com/pdf/14669/Whatever/Doesntmatter">Whatever</a>
在“pdf”和斜杠之后是一个我感兴趣的 ID 号。所以我必须从字符串中多次出现的这种 url 中获取所有 ID。什么是最好的正则表达式?
提前致谢。
如果您知道 url 正是这样,您的正则表达式可以是:
someplacelol\\.com/pdf/([0-9]+)/
我不是正则表达式艺术家,但您应该能够通过以下方式从元素中获取 url:
\<a\s.*?href=(?:\"([\w\.:/?=&#%_\-]*)\"|([^\"][\w\.:/?=&#%_\-]*[^\"\>])).*?\>
第一组将包含 URL。
从那里你应该能够毫不费力地提取数字。我在此页面的源代码上测试了该链接,它能够正确识别所有a
s 中的所有 HREFS。
请不要评论和说It breaks for <a id="<<<>><><<>>href=" href="<a href=">
,因为 OP 在他对问题的描述中提供了对 HTTP 标准的荒谬滥用,例如这个在他的跟踪案例中不会出现。
此外,如果出于某种奇怪的原因,一个元素有 2 个 href,则只会抓取第一个。如果你关心的话,你可能会解决这个问题。
编辑:在之后添加了空格要求,<a
因此它不会匹配<asdffsdfsfg href="lol">
.