1

次のような文字列があるとします。 String message = "you should try http://google.com/ ";

今、「http://google.com/」を新しい文字列 URL に送信したい

私がやりたいことは、文字列内の「単語」が「http://」で始まるかどうかを確認し、その単語を抽出することです。ここで、単語はスペースで囲まれたものです (単語の一般的な英語の定義)。

文字列を抽出する方法がわかりません。私ができる最善の方法は、文字列で startsWith を使用することです。単語で startsWith を使用して単語を抽出するにはどうすればよいですか? これを説明するのが少し難しい場合は申し訳ありません。前もって感謝します!

編集:また、REGEX操作から単語を抽出するにはどうすればよいですか? また、文字列に複数の URL がある場合、どのように処理すればよいですか?

4

4 に答える 4

3

Pattern & Matcher クラスを使用します。

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"
}

この正規表現は 、さらには URL でも機能http://...https://...ますwww...。他の正規表現は、ネット上で簡単に見つけることができます。

于 2012-11-07T20:52:10.837 に答える
0

このタスクを実行する「正しい」方法は、文字列を空白で分割し(String#split( "\ s"))、それをURLコンストラクターにパイプすることです。文字列がプレフィックスで始まり、MalformedURLExceptionがスローされた場合、それは無効です。URLクラスコンストラクターは、あなたや私が思いついたどのソリューションよりもはるかに優れたテストと堅牢性を備えています。だから、それを使ってください、そして車輪の再発明をしないでください。

于 2012-11-07T21:05:19.497 に答える
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();
}
于 2012-11-07T21:03:08.023 に答える
0

これには Java Regex を使用できます。次の正規表現は、http://またはhttps: // で始まり、次の空白文字までのすべての文字列をキャッチします。

Pattern urlPattern = Pattern.compile("(http(s)?://[.^[\\S]]*)");
Matcher matcher = compile.matcher(myString);
if (matcher.find()) {
    String url = matcher.group();
}
于 2012-11-07T21:07:48.913 に答える