修改正则表达式以检测所有URL链接

时间:2014-01-23 22:41:02

标签: java regex url pattern-matching

我有一些方法可以将我返回到字符串中的链接数组,但只有当链接具有“http”或“www”前缀(http:// site.com或 www.site.com < / strong>)。并且还需要检测没有前缀的链接 site.com 请帮帮我

ArrayList retrieveLinks(String text) {
ArrayList links = new ArrayList();

String regex = "\\(?\\b(http://|https://|www[.])[-A-Za-z0-9+&@#/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#/%=~_()|]";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(text);
while(m.find()) {
String urlStr = m.group();
char[] stringArray1 = urlStr.toCharArray();

if (urlStr.startsWith("(") && urlStr.endsWith(")"))
{

    char[] stringArray = urlStr.toCharArray();

    char[] newArray = new char[stringArray.length-2];
    System.arraycopy(stringArray, 1, newArray, 0, stringArray.length-2);
    urlStr = new String(newArray);
   // System.out.println("Finally Url ="+newArray.toString());

}
//System.out.println("...Url..."+urlStr);
links.add(urlStr);
}
return links;
}

1 个答案:

答案 0 :(得分:0)

不评论其余的源代码

在声明可能前缀的组之后使用?使前缀可选。

String regex = "\\(?\\b(http://|https://|www[.])?[-A-Za-z0-9+&@#/%?=~_()|!:,.;]*[-A-Za-z0-9+&@#/%=~_()|]";

查看实时测试here