Expresiones regulares
Introducción
En un artículo anterior se comentarios las opciones básicas de búsqueda dentro de Apache OpenOffice. Aquí comentaremos una de las opciones avanzadas: las expresiones regulares.
Con expresiones regulares (de ahora en más, ExpReg) es posible localizar textos indefinidos siguiendo un patrón. Por ejemplo, la expresión
[:number:]
encontrará cualquier dígito,
[:number:]+
encontrará un entero arbitrario y
[:number:]+\,?[:number:]*
encontrará un número arbitrario que podría (o no) tener una parte decimal separada por una coma.
Como se puede ver de estos ejemplo, en las ExpReg varios caracteres tienen un significado especial. En este artículo las principales características del sistema ICU utilizado por Apache OpenOffice serán comentadas.
Caracteres especiales
Como ya hemos comentado, varios caracteres tienen un significado particular dentro de la expresión regular. Estos caracteres son todos los tipos de paréntesis, corchetes y llaves, la barra invertida, el punto, el signo de pesos, etcétera. Para buscar por estos caracteres especiales es necesario «escaparlos» con una barra invertida: por ejemplo, para buscar por [ se necesita escribir
\[
y, por supuesto, para buscar la barra invertida dos barras invertidas deben ser escritas
\\
El punto
El punto puede utilizarse para encontrar un carácter genérico.
h.y
encontrará hoy, hay, huy... incluso hXy.
La expresión
[:any:]
es equivalente al punto.
Signo de interrogación
Se utiliza para encontrar cero o una instancias del carácter anterior. Por ejemplo
buscas?
encontrará tanto busca como buscas.
El más
Se utiliza para encontrar una o más instancias del carácter anterior.
El asterisco
Encuentra un número arbitrario de instancias, incluso cero:
hay*
encontrará hay, hayy, hayyyyyyyy...
Llaves
Pueden usarse para indicar el número de repeticiones. Por ejemplo,
ou{2,5}ch
encontrará ouuch, ouuuch, ouuuuch, ouuuuuch, pero no ouch!
Usando solo un número se encontrará ese exacto número de instancias Using only one number will match the exact number
ou{3}ch
encontrará solo ouuuch, mientras que
ou{3,}ch
encontrará la palabra con al menos tres u.
Acento circunflejo
El signo ^ tiene varios significados dependiendo del contexto. Por un lado, puede ser utilizado para encontrar cualquier cosa al principio de un párrafo. Por ejemplo, en el párrafo
El texto en el libro
la expresión
^el
encontrará el primer «el», pero no el segundo.
Dentro de corchetes, el signo ^ sirve para negar un carácter. Por ejemplo,
[^a]
encontrará cualquier carácter que no sea una a, mientras que
[^ar]
encontrará un carácter que no sea ni a ni r.
El signo $
El significado de este signo también depende del contexto.
Utilizado solo, encontrará quiebres de párrafo pero utilizado con otros caracteres encontrará esos caracteres al final del párrafo. Por ejemplo, en el párrafo
Tu libro está debajo de este otro libro
la expresión
libro$
encontrará la segunda instancia de libro, pero no la primera.
En el campo «reemplazar por» el signo $ tiene otro significado que veremos más adelante.
La barra invertida \
Como hemos ya comentado, la barra invertida puede usarse para «escapar» símbolos especiales para así poder buscar por ellos, pero también puede darle un significado diferente a símbolos normales. Por ejemplo
\b
buscará por un límite de palabra:
\bjus
encontrará las primeras tres letras de justo, justicia, justificar... pero no ajustar mientras que
mo\b
encontrará las últimas dos letras de cómo, tómo... pero no monitor.
La expresión
\w
encontrará cualquier carácter dentro de una palabra.
\W
(con la W en mayúscula) encontrará un carácter que no es un «elemento de palabra» (un espacio, un signo de pregunta... etcétera).
\t
encontrará un tabulador
\n
encontrará un quiebre de línea, pero en el campo de reemplazar por insertará un quiebre de párrafo (el mismo que se buscaba con $).
La combinación \u seguida por un número exadecimal puede utilizarse para buscar un carácter específico a través de su código unicode. Por ejemplo
\u03b4
encontrará el carácter griego delta δ.
La barra vertical |
Puede utilizarse para encontrar alternativas. Por ejemplo
dis[t|c]o
encontrará tanto disto como disco. Esto puede utilizarse con más opciones del tipo [a|b|c].
Los corchetes en la expresión anterior son utilizados para limitar la selección, ya que escribir dist|co buscaría «dist» o «co».
Grupos y referencias
Agrupando expresiones entre paréntesis, como
(expresión1)(expresión2)
nos da la posibilidad de llamar cada expresión más tarde en la ExpReg con una barra invertida seguida del número de la expresión: \1 llamará la primer expresión, \2 la segunda, etcétera.
Por ejemplo, la expresión
\b(\w+) *\1\b
(notar el espacio entre (w+) y el *) puede utilizarse para encontrar palabras repetidas: ambos \b encuentran un límite de palabra, \w+ uno o más elementos de palabra mientras que \1 llama esos elementos de palabra encontrados en el grupo(\w+).
Para llamar el texto encontrado por el grupo en el campo Reemplazar por, es necesario utilizar el signo $ seguido por el número de la expresión en lugar de la barra invertida.
Por ejemplo, buscando por
\b(\w+) *\1\b
y reemplazando por
$1
se eliminará cualquier palabra duplicada en el texto.
Otras expresiones
[:alpha:]
encontrará cualquier carácter ASCII, pero no caracteres acentuados o números, para esto se necesita utilizar
[:any:]
o el punto, como se ha visto anteriormente.
[:number:]
o
[:digit:]
encontrará un dígito simple.
[:space:]
encontrará cualquier tipo de espacio, incluso los de no separación.
Es posible utilizar un guión junto con un par de corchetes para indicar rangos. Por ejemplo
[0-8]
encontrará cualquier dígito excepto el 9.
En el campo reemplazar por,
&
insertará la misma cadena de texto encontrada por la ExpReg.
Límites en el uso de expresiones regulares
Las ExpReg solo pueden buscar dentro de un párrafo: no es posible utilizarlas por ejemplo para encontrar dos párrafos buscando por un particular final del primero y un particular comienzo del segundo.
Las marcas de párrafo no pueden encontrarse en combinación con otros textos. Por ejemplo, en un párrafo del tipo
Un breve ejemplo. Este es el final del texto.
la expresión
\.$
encontrará solo el punto final, no el quiebre de párrafo.
Más allá de las expresiones ya indicadas (&, \n, la llamada a grupos con la barra invertida seguida de un número), el campo «Reemplazar por» no acepta expresiones regulares.
Expresiones regulares en Writer
En Writer, con Editar → Buscar y Reemplazar o Ctrl + B se abrirá el menú de Buscar y reemplazar. Allí, con un clic en Más opciones se tiene la opción de habilitar la herramienta de ExpReg:
Como puede verse de la captura de pantalla, es posible combinar las ExpReg con otras opciones como el Formato .
Expresiones Regulares en Calc
EN PREPARACIÓN
Buscar y reemplazar en el menú de búsqueda
EN PREPARACIÓN
Expresiones regulares en fórmulas
EN PREPARACIÓN
Expresiones Regulares en Impress
EN PREPARACIÓN