所以我希望从网站上抓取rapidshare.com链接。我有以下正则表达式来查找链接:
<a href=\"(http://rapidshare.com/files/(\\d+)/(.+)\\.(\\w{3,4}))\"
http://rapidshare.com/files/(\\d+)/(.+)\\.(\\w{3,4})
如何编写将排除<a href="...">
标记中嵌入的文本的正则表达式。并且仅捕获>here</a>
我还必须记住,并非所有链接都嵌入在href标记中。有些只是以纯文本显示。
基本上排除正则表达式中的模式有什么意义吗?
感谢。
答案 0 :(得分:0)
这样怎么样,最后一部分会尝试匹配除' " >
http://rapidshare.com/files/(\d+)/([^'"> ]+)
答案 1 :(得分:0)
要捕获锚标记的内部文本,同时忽略标记的所有属性文本,您将使用该模式:
<a href="http://rapidshare.com/files/(\d+)/(.+)\.(\w{3,4})[^>]*>(.*?)</a>
[^>] *部分与标记中的所有其他内容匹配,直到开始标记结束。 (。*?)执行内部文本的非贪婪捕获。
如果您想捕获锚标记链接和非锚标记链接,那么这些实际上是两个独立的问题。可能有一个正则表达式,但它会非常复杂。您最好只使用简单的正则表达式单独查找非锚标记链接:
[^'"]http://rapidshare.com/files/(\d+)/(.+)\.(\w{3,4})
答案 2 :(得分:-1)
如下:
/http:\/\/rapidshare.com\/files\/\d+\/[^<&\s]+\.\w{3,4}/
我摆脱了捕获组,因为我认为你只有它们在那里,因为你认为你可能需要它们以确保不同的分组工作,如果你真的想要解析它们,你可以重新添加它们。 / p>
您可以展开[^<&"\s]
,因为它只排除空格,<
字符可能是标记的开头,&
包含
之类的内容1}}和其他HTML实体或"
,它们将是href=
的结尾。但如果您愿意,可以排除任何non-valid URI character。这应该涵盖您的内联文本以及嵌入为href。