2016-04-14 47 views
0

Apex'te düzenli olarak ifade ettiğim bir ifade, yalnızca bir dizede ihtiyacım olan bağlantının bir kısmını tutuyor. Bütün bağlantıyı almak için ona ihtiyacım var. BenDize içindeki tüm bağlantıyı bulmak için Normal İfade

http://test.com/testing/123654123 nasıl tam bağlantıyı sağlamak için normal ifade değiştirebilir ihtiyaç

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(); 
     } 

Bu yalnızca

http://test.com/ dönüyor: İşte

çalışmanın getirileri im nedir?

Bunu yapmak için var olan normal ifademi değiştirmem gerekiyor. Düzenli ifadenin olabildiğince fazlasını nasıl tutabilirim?

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

sadece 'http [^ \\ s] +' yeterli olmayacaktır sonra bağlantı bulunamadı çalışıyorsanız? [Demo] (https://regex101.com/r/iS4zW4/1) –

+0

Hangi tür bağlantılar? sadece HTTP veya herhangi bir bağlantı almak için ihtiyacınız var mı? (https: // gopher: // ftp: // myownpersonnalurlscheme: //) Farklı bileşenleri bölmeniz gerekiyor, portları ve kullanıcıları ele almanız gerekiyor mu? – Newtopian

+0

Bir dizgede urls bulmak için gerçek güvenilir yollar yoktur. . Tek yapabileceğiniz tanımlanmış bir tür url aramak. –

cevap