Archive for the ‘ Expresiones regulares ’ Category

Backreference en expresiones regulares (y II)

Esta segunda parte viene a explicar cómo realizar reemplazos en expresiones regulares mediante backreference, es decir, a partir de las coincidencias de esa expresión regular.

Como ya se explicó en otro post, para realizar reemplazos en java con expresiones regulares se utiliza la función appendReplacement(StringBuffer sb, String replacement) de la clase Matcher. Si dentro de la cadena de reemplazo se establece algún $n, éste será automáticamente sustituido por el valor del grupo correspondiente.

Sigue leyendo

Backreference en expresiones regulares (I)

Estos días me ha tocado pelearme con algo que desconocía completamente en expresiones regulares y que me ha parecido muy interesante, además de ayudarme enormemente. Se trata del backreference, o de cómo hacer referencia a elementos de la expresión regular dentro de la propia expresión regular o dentro de un remplazo con expresiones regulares.

Si en el contenido de una expresión regular se pone \n, se sustituirá automáticamente por el valor del grupo correspondiente, pudiendo tener así “variables” dentro de una expresión regular.

Sigue leyendo

Expresión regular para obtener todo

¡Menuda tontería! Se estará diciendo más de uno, pero si eso es muy sencillo. Pues sí, pero aún he tardado un rato para llegar a conseguir lo que quería. Mi objetivo era obtener absolutamente todos los caracteres que contiene una etiqueta dentro de un documento PHP, caracteres, espacios, saltos de línea, tabuladores, caracteres especiales, … !TODO¡

El caso es que esta expresión regular forma parte de un programa que parsea documentos PHP


<.+?>([\s\S]+?)</.+?>

Con esta expresión regular, el grupo 1 obtendrá todo lo que contenga una etiqueta y a mi me solucionará todo.

Expresiones regulares en Java

Hay que tener en cuenta que usar expresiones regulares permite hacer búsquedas muy complejas, pero a cambio de un coste: la bajada de rendimiento en la velocidad de procesado. Una bajada no muy grande, pero que si se realiza muchas veces puede llegar a tener un coste muy alto, por lo que hay que evaluar en cada momento si es conveniente utilizar una expresión regular o recurrir a otras opciones como la función indexOf(String, int) de la clase String.

Para trabajar con expresiones regulares en Java se utiliza el paquete java.util.regex que está formado por dos clases, la clase Matcher y la clase Pattern, y una excepción PatternSyntaxException. La clase Pattern permite definir el patrón de búsqueda mediante el método compile(String).


Pattern p = Pattern.compile(“Java”);
// Define un patrón para buscar la palabra Java

Sigue leyendo

Expresiones regulares

Algunos programadores cuando se enfrentan a un problema piensan “Ya sé, ¡usaré expresiones regulares!” Y entonces es cuando tienen dos problemas.

Esta frase pertenece a Jamie Zawinski, programador informático responsable de la versión 1.1 de Netscape Navigator y que realizó importantes aportaciones varios proyectos como Mozilla y XEmacs.

Una expresión regular es un patrón de describe una cadena de caracteres. Básicamente las expresiones regulares se utilizan para realizar búsquedas y sustituciones dentro de un texto. Mediante la combinación de caracteres especiales, junto con letras y números, se puede montar un patrón que busque una cadena de caracteres en un texto. Lo bueno de las expresiones regulares es que, con pequeños cambios, se pueden utilizar en casi cualquier ámbito: lenguajes de programación, comandos del sistema, bases de datos, editores de texto, etc.

Sigue leyendo