0
我有方法可以返回我的字符串数组的链接,但这项工作只有在链接有“HTTP”或“WWW”前缀(如http:// site.com或WWW .site.com)。同时还需要检测不带前缀链接仅仅site.com 请帮我修改正则表达式来检测所有的URL链接
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;
}
这整个正则表达式实在是模糊的,前缀可能是从一个随机字符串区分的URL的唯一的事...... OP你可能希望先对正则表达式的其余部分工作(你可以在网上找到一些样品已经为URL验证,常见问题)。此外,'http:// | https://'确实只是'https?://'。 – Robin