2012-04-02 91 views
-4

我正在使用超链接的项目。我需要解析来自Java中一个字符串的所有链接,但只能链接到http://rapidshare.com如何使用正则表达式来解析链接

所有解析的链接都应填入数组中。我的代码看起来像这样:

Matcher mat = Pattern.compile("(\"(.*?)\"|([^,]+)),?").matcher(html); 

但它仍然得到其他字的括号和链接。我怎样才能得到这个工作?

上quellcode更新

Matcher mat = Pattern.compile("/href=\\\"(http://(www\\.)?rapidshare.com/.+)\\\"/").matcher(html); 

while (mat.find()) {       
    result.add(mat.group(2) == null ? mat.group(3) : mat.group(2));     
} 
+0

我从一个正则表达式开始:'/ href = \“(http://(www \。)?rapidshare.com /.+)\”/'。正如@Joeblackdev所说的那样,使用在线检查器来正确使用它 - 并让我们知道你想出了什么! – halfer 2012-04-02 17:29:52

+0

顺便说一句,我希望你已经被低估了,因为这里的人们通常更喜欢提问者先给一些好东西。为什么现在不这样做,并且将你的第一次尝试加入你的问题? ':)' – halfer 2012-04-02 17:36:27

+0

我现在用正则表达式的正则表达式来尝试。我没有收到任何链接。我更新了我的quellcode – user1308342 2012-04-02 19:09:21

回答

0

我在生产中使用的my firefox add-on此javascript正则表达式:

(?:h..ps?://)?(?:www\.)?rapidshare\.com/files/([0-9]+)/([^\s<"/]{1,500})/? 

流行JDownloader Java open source software使用此:

// Copyright (C) 2008 JD-Team [email protected] 
"http://[\\w\\.]*?rapidshare\\.com/files/\\d+/?(.*?)($|\\?)" 

这两个正则表达式专门用于文件链接。他们需要一个文件名,因为API需要一个文件名。