Expresiones regulares

From Apache OpenOffice Wiki
< ES‎ | Manuales‎ | GuiaAOO‎ | TemasAvanzados
Revision as of 13:14, 22 April 2013 by RGB (Talk | contribs)

Jump to: navigation, search

Editing.png Esta página está en estado borrador.


Introducción

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».

Gruops u 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+).

Template:Documentation/Note

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.

Personal tools