Java - Problema con expresión regular

   
Vista:

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
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con expresión regular

Publicado por Tom (915 intervenciones) el 14/04/2010 17:49:05
Pues creo que te equivocas al suponer que las REs de PHP tienen la misma sintaxis que las de Java ...

http://java.sun.com/docs/books/tutorial/essential/regex/intro.html

http://www.regular-expressions.info/java.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con expresión regular

Publicado por Tom (915 intervenciones) el 14/04/2010 17:58:31
También te equivocas en la sintaxis de PHP :D

Prueba quitando las llaves en:

String all = "{"+host+"}{"+port+"}{"+path+"}{"+query+"}";

ya que me temo que en PHP se usen para delimitar variables, no como parte de la RE.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar