Ich benutze RegexBuddy während der Arbeit mit regulären Ausdrücken. Aus seiner Bibliothek habe ich den regulären Ausdruck kopiert, um URLs zu entsprechen. Ich habe erfolgreich in RegexBuddy getestet. Wenn ich es jedoch als Java String
Flavor kopiert habe und es in Java-Code eingefügt habe, funktioniert es nicht. Die folgende Klasse druckt false
:Regulärer Ausdruck für die Übereinstimmung von URLs in Java
public class RegexFoo {
public static void main(String[] args) {
String regex = "\\b(https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|!:,.;]*[-A-Z0-9+&@#/%=~_|]";
String text = "http://google.com";
System.out.println(IsMatch(text,regex));
}
private static boolean IsMatch(String s, String pattern) {
try {
Pattern patt = Pattern.compile(pattern);
Matcher matcher = patt.matcher(s);
return matcher.matches();
} catch (RuntimeException e) {
return false;
}
}
}
Weiß jemand, was ich falsch mache?
Sergio "url gültig ist", nicht Runtime fangen. Es kann zu kleinen Fehlern führen und ist insgesamt eine schlechte Übung. Wenn Sie das Szenario nur ignorieren möchten, wenn der Ausdruck ungültig ist, verwenden Sie stattdessen:} catch (PatternSyntaxException pse) {}. Siehe Punkt 57 von: http://java.sun.com/docs/books/effective/ – OscarRyz
Oder Sie könnten Pattern patt = Pattern.compile (pattern, Pattern.CASE_INSENSITIVE); um zu vermeiden, die Regex zu ändern, um Groß- und Kleinschreibung zu entsprechen. – jm4
Ich weiß, dass dies wirklich alt ist ('08), aber für alle, die ähnliche Probleme haben, hat RegexBuddy die Registerkarte "Verwenden". Stellen Sie sicher, dass Sie zuerst den Java 7-Flavor auswählen und dann im Panel "Use" den Java-Code für Ihren speziellen Fall generieren lassen können. Das hat gut für mich funktioniert. –