2016-04-14 30 views
0

私は文字列に必要なリンクの一部を取得するだけの頂点にある正規表現を持っています。私はリンク全体をつかむために必要です。ここで文字列内のリンク全体を見つけるための正規表現

はイムでの作業です:

String myvar = 'this is an example http://test.com/testing/123654123%0A%0A%0A%'; 

String myvar1 = '(?:(?:(?:[a-z0-9]{3,9}:(?://)?)(?:[-;:&=+$,w][email protected])?[a-z0-9.-]+|(?:www.|[-;:&=+$??,w][email protected])[a-z0-9.-]+)((?:/[+~%/.w-]*)?\\??(?:[-+=&;%@.w]*)#?w*)?)'; 

      Pattern MyPattern = Pattern.compile(myvar1); 

      Matcher MyMatcher = MyPattern.matcher(myvar); 

      while (MyMatcher.find()) { 
       System.debug(MyMatcher.group()); 
       Location = MyMatcher.group(); 
     } 

これは私がhttp://test.com/testing/123654123

どのように私は完全なリンクを提供するために、正規表現を変更することができますが必要http://test.com/

を返していますか?

これを達成するために既存の正規表現を変更するだけで済みます。できるだけ多くの正規表現を使用するにはどうすればいいですか?

(?:(?:(?:[a-z0-9]{3,9}:(?://)?)(?:[-;:&=+$,w][email protected])?[a-z0-9.-]+|(?:www.|[-;:&=+$??,w][email protected])[a-z0-9.-]+)((?:/[+~%/.w-]*)?\\??(?:[-+=&;%@.w]*)#?w*)?) 
+4

あなただけの 'HTTP [^ \\ s]は+'十分されることはありませんその後、リンクを一致しようとしている場合は? [デモ](https://regex101.com/r/iS4zW4/1) –

+0

どのようなリンクですか? HTTPのみ、またはあらゆる種類のリンクを取得する必要がありますか? (https:// gopher:// ftp:// myownpersonnalurlscheme://)異なるコンポーネントを分割する必要があるかどうか、ポートとユーザーなどを処理する必要があるかどうか – Newtopian

+0

文字列内のURLを確実に見つける確実な方法はありません。あなたができることは、定義された種類のURLを検索することだけです。 –

答えて

関連する問題