Uso RegexBuddy mientras trabajo con expresiones regulares. De su biblioteca copié la expresión regular para que coincida con las URL. Probé con éxito dentro de RegexBuddy. Sin embargo, cuando lo copié como Java String
sabor y lo pegué en código Java, no funciona. Las impresiones de clase siguientes: false
Expresión regular para hacer coincidir las URL en 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;
}
}
}
¿Alguien sabe lo que estoy haciendo mal?
Sergio, no cogen RuntimeException. Puede presentar errores sutiles y es una mala práctica en general. Si solo quiere ignorar el escenario cuando la expresión es ilegal, use:} catch (PatternSyntaxException pse) {} en su lugar. Consulte el elemento 57 de: http://java.sun.com/docs/books/effective/ – OscarRyz
O puede usar Pattern patt = Pattern.compile (pattern, Pattern.CASE_INSENSITIVE); para evitar cambiar la expresión regular para que coincida con letras mayúsculas y minúsculas. – jm4
Sé que esto es realmente viejo ('08), pero para cualquier persona que tenga problemas similares, RegexBuddy tiene la pestaña "Usar". Asegúrese de seleccionar primero el sabor de Java 7 y luego, en el panel "Usar", puede dejar que genere el código de Java para su caso específico. Esto funcionó bien para mí. –