仅从字符串中获取URL部分

时间:2013-05-18 13:59:46

标签: java android regex string android-webview

我想从字符串中获取网址,以便在WebView中显示网址。

示例字符串:

exp 1- Hello dilip refer this url www.google.com.
exp 2- hi ramesh this is good for android http://android.com

我只想www.google.comhttp://android.com如何将它们从字符串中拆分

4 个答案:

答案 0 :(得分:2)

如果您只是想从字符串中检索URL,我建议您只想在stackoverflow上查找问题。

像这样:

public static final String URL_REGEX = "^((https?|ftp)://|(www|ftp)\\.)?[a-z0-9-]+(\\.[a-    z0-9-]+)+([/?].*)?$";

 Pattern p = Pattern.compile(URL_REGEX);
 Matcher m = p.matcher("example.com");//replace with string to compare
 if(m.find()) {
 System.out.println("String contains URL");
}

从这篇文章:https://stackoverflow.com/a/11007981/1164919 您将在同一个帖子中找到更多关于如何执行此操作的片段和建议。

但是如果你想亲自去理解它是如何工作的。您还可以创建自己的简单代码段来检测字符串中是否存在URL。 例如,您也可以使用if(String.Contains("something"))。如果你的输入存在于String中,这将简单地返回true或false。

有很多例子等着你去读。 搜索以下内容:regex或者如果是硬,String.split等等。

答案 1 :(得分:1)

我建议将字符串拆分为所有没有空格的子字符串,然后选择包含“。”的子字符串。嵌入在其他角色之间。在普通英语中,“。”只会出现在URL中。

答案 2 :(得分:1)

这是一种可能的解决方案。以下正则表达式假设它在一个字母跟在一个字母后面找到了一个URL,并且一个字母立即跟随该字段。以下是一些匹配的例子:

t.t
hello.aspx
www.google.com
http://android.com
http://android.com/test/test.aspx
https://www.stackoverflow.com/questions.html?type=android
www.google.com/android/games.aspx#hello

这是正则表达式(与IgnoreCase选项一起使用):

(https?://)?[-A-Z0-9]+\.[-A-Z0-9.]+(/[-A-Z0-9+&@#/%=~_|!:,.;?]*)?

针对示例文本运行它会返回您想要的URL。

这里有一些使用这个正则表达式的示例Java代码:

String testInputString = "Test 1 www.google.co.uk Test 2 www.google.co.in Test 3 www.google.com Test 4 http://android.com Test 5 meta.stackoverflow.com";
Pattern p = Pattern.compile("(https?://)?[-A-Z0-9]+\\.[-A-Z0-9.]+(/[-A-Z0-9+&@#/%=~_|!:,.;?]*)?", Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
Matcher m = p.matcher(testInputString);
while (m.find()) {
    System.out.println(m.group(0));
} 

答案 3 :(得分:0)

假设您的字符串如下所示,您可以使用以下正则表达式来提取www.google.com和http://android.com

String s = "Hello dilip refer this url www.google.com. hi ramesh this is good for  android http://android.com";   
Pattern pc = Pattern.compile("((http://)|(www.))[A-Z,a-z]+.com");
Matcher matcher = pc.matcher(s);
while(matcher.find())
{
   System.out.println("String Extracted   "+matcher.group());
}

输出

String Extracted   www.google.com
String Extracted   http://android.com 

注意:上述内容不适用于此类网址http://meta.stackoverflow.com,www.google.co.uk和b3ta.com。

编辑:

       String s = "Hello dilip refer www.google.co.uk www.google.co.in this url www.google.com. hi ramesh this is good for android http://android.com hello there meta.stackoverflow.com";   
       Pattern pc = Pattern.compile("((http://)|(www.))([A-Z,a-z,0-9])+((.com)|(.co.[a-z]{2}))|([A-Z,a-z,0-9].[A-Z,a-z,0-9])+.com");
       Matcher matcher = pc.matcher(s);
       while(matcher.find())
       {
          System.out.println("String Extracted   "+matcher.group());
       }

输出:

       String Extracted   www.google.co.uk
       String Extracted   www.google.co.in
       String Extracted   www.google.com
       String Extracted   http://android.com
       String Extracted   meta.stackoverflow.com

即使上述情况也不完美。但是,如果你可以修改上面的正则表达式它应该帮助你