RegEx: (Um-)formulieren eines Pattern zur Identifizierung komplexer URLs

Guten Morgen,

hier im Forum/im Internet gab es schon einige Ansätze Pattern zu definieren, um aus einem String URLs rauszufiltern. Da die Lösungen für mich nicht zufriedenstellend waren und gerade auch weil ich hier und hier zwei Blogeinträge gefunden habe, von Menschen die behaupten gute Pattern generiert zu haben würde ich das Forum bitten mir zu helfen diese JAVA-Konform umzuformulieren, da sie entsprechend der C-Notation formuliert wurden und ich das leider auch nach dem Studieren diverser Internetseiten nicht umgesetzt bekomme.

Viele Grüße und vielen Dank schonmal vorab,
bbh
 
Hallo,
mir konnte zwar bisher noch keiner hier zur Seite stehen aber ich versuche es dennoch erneut.
Das Pattern sieht inzw. so aus:
Java:
String regex =  "(?i)\\b((?:https?://|www\\d{0,3}[.]|[a-z0-9.\\-]+[.][a-z]{2,4}/)(?:[^\\s()"+
                "<>]+|\\(([^\\s()<>]+|(\\([^\\s()<>]+\\)))*\\))+(?:\\(([^\\s()<>]+|(\\([^\\s()"+  
                "<>]+\\)))*\\)|[^\\s`!()\\[\\]{};:'\".,<>?«»“”‘’]))";

Jetzt besteht jedoch das Problem, dass ein Link der über eine Zeile hinaus geht nicht erkannt wird. Irgendwelche Ideen an dieser Stelle? Pattern.compile(regex, Pattern.MULTILINE); - hilft leider nicht
Grüße,
bbh.

PS Habe die selbe Anfrage inzw. auch im Tutorials - Forum gestartet.
 
Zuletzt bearbeitet:
adde zu dem Regex ein (?s) am Anfang, sollte das Problem beheben mit Zeilenumbrüchen

EDIT: Oops habe nicht zu ende gelesen ^^ (?s) ist eigentlich das gleiche wie MULTILINE, versuche es aber vielleicht trotzdem. Bei mir hat es nie damit Probleme gegeben

EDIT 2: Manchmal rede ich so ein Unsinn ^^...(?s) == Pattern.DOTALL. Und die Bedeutung:

"The regular expression . matches any character except a line terminator unless the DOTALL flag is specified. "

Das sollte dein Problem beheben

PS. Du brauchst das . nicht mit [] umschließen (es sei dem das sollte dir zur Übersicht dienen 😛)
 
Zuletzt bearbeitet:
also ich filter mit dem ?s auch meine mutliline-kommentare, funktioniert wunderbar
Code:
(?s)/\\*((.*?\\*/)|(.*))

für kommentare der art:
/* text
geht weiter */
 
das hilft nur bei .*, wovon es relativ wenige Abschnitte in dem Mega-RegEx gibt, daher vielleicht nicht so nützlich,
allein bei \\s sowie auch ^\\s schon unbrauchbar? na kann man alles testen
 

Neue Themen


Zurück
Oben