Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java:从字符串中提取不带WWW的URL时出错_Java_Url - Fatal编程技术网

Java:从字符串中提取不带WWW的URL时出错

Java:从字符串中提取不带WWW的URL时出错,java,url,Java,Url,我试图从字符串中提取url,以下是字符串: 你好,我叫约翰。我的博客是john.com 我无法提取该url(john.com),因为它不包含www 我从提取url中使用以下表达式: (?:(?:https?|ftp|file):\/\/|www\.|ftp\.)(?:\([-A-Z0-9+&@#/%=~_|$?!:,.]*\)|[-A-Z0-9+&@#/%=~_|$?!:,.])*(?:\([-A-Z0-9+&@#/%=~_|$?!:,.]*\)|[A-Z0-9+&

我试图从字符串中提取url,以下是字符串:

你好,我叫约翰。我的博客是john.com

我无法提取该url(
john.com
),因为它不包含
www

我从提取url中使用以下表达式:

(?:(?:https?|ftp|file):\/\/|www\.|ftp\.)(?:\([-A-Z0-9+&@#/%=~_|$?!:,.]*\)|[-A-Z0-9+&@#/%=~_|$?!:,.])*(?:\([-A-Z0-9+&@#/%=~_|$?!:,.]*\)|[A-Z0-9+&@#/%=~_|$])
但还是不行

请帮助我如何在没有www的情况下提取url

注意到:
我在
stactoverflow
上尝试了所有类似的问题,但仍然不起作用您可以尝试使用我在项目中使用的Regex

public static List<String> extractUrls(String sms) {
List<String> containedUrls = new ArrayList<String>();
String text = sms;

// Split the sms to analyze if each part is a URL
String[] split = text.split(" ");

Pattern p = Pattern.compile("(@)?(href=')?(HREF=')?(HREF=\")?(href=\")?(http://)?[a-zA-Z_0-9\\-]+(\\.\\w[a-zA-Z_0-9\\-]+)+(/[#&\\n\\-=?\\+\\%/\\.\\w]+)?");

// Attempt to convert each item into an URL
for (int i = 0; i < split.length; i++) {
    if (p.matcher(split[i]).matches()) containedUrls.add(split[i]);
}

return containedUrls;
}
公共静态列表提取URL(字符串sms){
List containedUrls=new ArrayList();
字符串文本=短信;
//拆分短信以分析每个部分是否为URL
String[]split=text.split(“”);
模式p=Pattern.compile(“(@)”(href=”)?(href=”)?(href=”)?(href=”)(http:/)?[a-zA-Z\u 0-9\\-]+(\\.\\w[a-zA-Z\u 0-9\-]+(/[\\\\\\\\\\\\\\\\%/\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\%/\\\\\\\\\\\\\\\\\\\\;
//尝试将每个项目转换为URL
对于(int i=0;i
您的正则表达式需要www或ftpI不要建议将
john.com
捕获为URL,因为字符串可能错误地连接了没有空格的句子,例如
你好,我的名字是john.com。我的博客是john.com。这将在6月底开放供公众查看。请访问我的博客。
但是如果您坚持,您应该在您的正则表达式中选择您的www或ftp。