正则表达式检索下载链接

时间:2010-12-19 00:40:51

标签: regex

我一直试图让我的正则表达式与各种下载链接相匹配,并缩小了以下内容。

对于90%的下载链接,它们将以“或”或http开头,以“或”或.exe结尾。这个的三个例子

现在烦人的部分是我掀起了两个覆盖这90%的正则表达式,但是必须有一种方法让它只需要一行代码。用户唯一需要更改的是他们正在寻找的文件扩展名。

我试过$ anchoring但是我不是一个正则表达式的专家,所以无法让它工作,试图在第一个.exe出现时开始匹配,然后再回来匹配第一个“或”或者在第一个.exe出现之前发生的http。是的,它们确实以href =然后“或”开始,但是你可以得到href =并且我不知道如何解释那个PLUS一些你不希望它的下载链接从href =开始而不是全部以http

开头

实施例

href="/bouncer?t=http%3A%2F%2Fdownload.portableapps.com%2Fportableapps%2Ffoxitreaderportable%2FFoxitReaderPortable_4.2.paf.exe">

我有的两个正则表达式覆盖了90%的情况

["']([^"']+(\.zip|\.rar|\.7z))(http[^"']+(\.zip|\.rar|\.7z))

编辑:这在一个名为Ketarin的程序中使用,它为我解析HTML并返回我可以使用正则表达式的页面源。我发现Ketarin以这种方式处理正则表达式,Singleline和IgnoreCase。

这种正则表达式将整个文本块视为一行,所以。字符也匹配\ r \ n。

除此之外,有没有人知道如何从字符串的结尾开始正则表达式匹配并回到第一个找到的''或http?我最接近的是

$?[^“'] *。exe文件

但我不确定如何在其中包含http作为OR包含匹配

2 个答案:

答案 0 :(得分:0)

/href[\=][\"]((.*)([.]exe))[\"]/使用组匹配(或扫描方法,如果您使用ruby

)尝试此操作

答案 1 :(得分:0)

编辑:对不起,我建立了一些有用的东西,希望它能起作用......反正:

(?<=href=").+?\.(your|extensions|here)

希望这个确实有帮助。用|分隔所需的扩展名[喜欢(exe:| rar | zip ....)]

祝你好运