Problema con expresión regular
Publicado por Jose Gonzalez (1 intervención) el 14/04/2010 16:25:14
Hola,
Encontré esta expresión regular en PHP cuyo objetivo es convertir cadenas del tipo http://xxx.xxx.xxx a elementos "a href" del tipo <a href="xxx.xxx.xxx">xxx.xxx.xxx</a>
function replace_urls($string)
{
$host = "([a-z\d][-a-z\d]*[a-z\d]\.)+[a-z][-a-z\d]*[a-z]";
$port = "(:\d{1,})?";
$path = "(\/[^?<>\#\"\s]+)?";
$query = "(\?[^<>\#\"\s]+)?";
return preg_replace("#((ht|f)tps?:\/\/{$host}{$port}{$path}{$query})#i", "<a href='$1'>$1</a>", $string);
}
La estoy convirtiendo a Java:
static String replaceURLS(String content)
{
String ret="";
String host = "([a-z\\d][-a-z\\d]*[a-z\\d]\\.)+[a-z][-a-z\\d]*[a-z]";
String port = "(:\\d{1,})?";
String path = "(/[^?<>\\#\"\\s]+)?";
String query = "(\\?[^<>\\#\"\\s]+)?";
String all = "{"+host+"}{"+port+"}{"+path+"}{"+query+"}";
String regex = "#((ht|f)tps?://"+all+")#i";
String expre = "<a href='$1'>$1</a>";
ret = ret.replaceAll(regex, expre);
return ret;
}
Pero me sale la siguiente excepción:
Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition near index 14 ((ht|f)tps?://{([a-z\d][-a-z\d]*[a-z\d]\.)+[a-z][-a-z\d]*[a-z]}{(:\d{1,})?}{(/[^?<>\#"\s]+)?}{(\?[^<>\#"\s]+)?})#i
^
at java.util.regex.Pattern.error(Pattern.java:1713)
at java.util.regex.Pattern.closure(Pattern.java:2775)
¿En que me estoy equivocando?
Gracias y un saludo
Encontré esta expresión regular en PHP cuyo objetivo es convertir cadenas del tipo http://xxx.xxx.xxx a elementos "a href" del tipo <a href="xxx.xxx.xxx">xxx.xxx.xxx</a>
function replace_urls($string)
{
$host = "([a-z\d][-a-z\d]*[a-z\d]\.)+[a-z][-a-z\d]*[a-z]";
$port = "(:\d{1,})?";
$path = "(\/[^?<>\#\"\s]+)?";
$query = "(\?[^<>\#\"\s]+)?";
return preg_replace("#((ht|f)tps?:\/\/{$host}{$port}{$path}{$query})#i", "<a href='$1'>$1</a>", $string);
}
La estoy convirtiendo a Java:
static String replaceURLS(String content)
{
String ret="";
String host = "([a-z\\d][-a-z\\d]*[a-z\\d]\\.)+[a-z][-a-z\\d]*[a-z]";
String port = "(:\\d{1,})?";
String path = "(/[^?<>\\#\"\\s]+)?";
String query = "(\\?[^<>\\#\"\\s]+)?";
String all = "{"+host+"}{"+port+"}{"+path+"}{"+query+"}";
String regex = "#((ht|f)tps?://"+all+")#i";
String expre = "<a href='$1'>$1</a>";
ret = ret.replaceAll(regex, expre);
return ret;
}
Pero me sale la siguiente excepción:
Exception in thread "main" java.util.regex.PatternSyntaxException: Illegal repetition near index 14 ((ht|f)tps?://{([a-z\d][-a-z\d]*[a-z\d]\.)+[a-z][-a-z\d]*[a-z]}{(:\d{1,})?}{(/[^?<>\#"\s]+)?}{(\?[^<>\#"\s]+)?})#i
^
at java.util.regex.Pattern.error(Pattern.java:1713)
at java.util.regex.Pattern.closure(Pattern.java:2775)
¿En que me estoy equivocando?
Gracias y un saludo
Valora esta pregunta


0