如何从字符串中提取单词?

时间:2012-11-07 20:47:22

标签: java regex string url extract

假设我有一个字符串: String message =“你应该试试http://google.com/”;

现在,我想将“http://google.com/”发送给新用户 字符串网址

我想做的是: 检查字符串中的“单词”是否以“http://”开头,并提取单词所在的单词 被空间包围的东西(一般英语定义的单词)。

我不知道如何提取字符串,我能做的最好就是在字符串上使用startsWith。如何在单词上使用startsWith,并提取单词? 对不起,如果这有点难以解释。 提前谢谢!

编辑:另外,我该怎么做才能从REGEX操作中提取单词?如果字符串中有多个url,我该如何处理呢?

4 个答案:

答案 0 :(得分:3)

使用模式&匹配课程。

String str = "blabla http://www.mywebsite.com blabla";
String regex = "((https?:\\/\\/)?(www.)?(([a-zA-Z0-9-]){2,}\\.){1,4}([a-zA-Z]){2,6}(\\/([a-zA-Z-_/.0-9#:+?%=&;,]*)?)?)";
Matcher m = Pattern.compile(regex).matcher(str);
if (m.find()) {
    String url = m.group(); //value "http://www.mywebsite.com"
}

此正则表达式适用于http://...https://...甚至www...网址。其他正则表达式可以很容易地在网上找到。

答案 1 :(得分:0)

你可以试试这个:

String str = "blabla http://www.mywebsite.com blabla";
Matcher m = Pattern.compile("(http://.*)").matcher(str);
if (m.find()) {
    String url = (new StringTokenizer(m.group(), " ")).nextToken();
}

答案 2 :(得分:0)

执行此任务的“正确”方法是按空格分割String - String#split(“\ s”) - 然后将其传递给URL构造函数。如果字符串以您的前缀开头并且抛出MalformedURLException则无效。 URL类构造函数比你或我想出的任何解决方案都经过了更好的测试和更强大的功能。所以,请使用它,不要重新发明轮子。

答案 3 :(得分:0)

您可以使用Java Regex: 以下正则表达式捕获以 http:// https:// 开头的任何字符串,直到下一个空白字符:

Pattern urlPattern = Pattern.compile("(http(s)?://[.^[\\S]]*)");
Matcher matcher = compile.matcher(myString);
if (matcher.find()) {
    String url = matcher.group();
}