2011-01-04 1 views
1

Hallo Jungs ich diese Regex gefunden Urls in einer Zeichenfolge zu erkennen und wickelt sie innerhalb des TagsHilfe mit Regex zu erkennen Urls in einer Zeichenfolge

public static String detectUrls(String text) { 
    String newText = text 
      .replaceAll("(?<!http://)www\\.[\\w/%.\\-?&=]+", "http://$0") 
      .replaceAll("(?:https?|ftps?|http?)://[\\w/%.\\-?&=]+", 
        "<a href='$0'>$0</a>"); 
    return newText; 
} 

aber diese Regex mit dem folgenden Muster nicht funktioniert:

https://www.myserver.com

so wenden Sie sich bitte beraten.

+0

Duplizieren: http://stackoverflow.com/questions/4519134/issues-with -my-regex-to-detect-urls-in-string/4519415 # 4519415 – Toto

Antwort

2

Diese Zeile:

.replaceAll("(?<!http://)www\\.[\\w/%.\\-?&=]+", "http://$0") 

Änderungen https://www.myserver.com-https://http://www.myserver.com

Es ist genau hat Sie haben es angewiesen. Sie müssen auch https und wahrscheinlich ftps? zum Lookbehind hinzufügen.

Sie können ignorieren auch das Protokoll:

.replaceAll("(?<!://)www\\.", "http://$0") 
1

denke ich, dass diese Sie wollen vielleicht ist:

public static String detectLinks(String text) { 
     String newText = text.replaceAll(
       "(?<!(http|https|ftps)://)www\\.[\\w/%.\\-?&=]+", "$0") 
       .replaceAll("(?<!://)www\\.", "http://$0").replaceAll(
         "(?:https?|ftps?|http?)://[\\w/%.\\-?&=+#]+", 
         "<a href='$0'>$0</a>") 

     return newText; 
    } 
Verwandte Themen