# El manual del editor de expresiones regulares

Jesper K. Pedersen

    blackie@kde.org

2001-07-03
0.1
&underFDL;
2001 Jesper K. Pedersen

Este manual describe el control del editor de expresiones regulares

KDE expresión regular

## Introducción

El editor de expresiones regulares es un editor para editar expresiones regulares en un estilo gráfico (en contraste a la sintaxis ASCII). Tradicionalmente, las expresiones regulares han sido escritas con la sintaxis ASCII, que, por ejemplo, quedaría como `^.*kde\b`. El mayor inconveniente de este estilo es:

- Es difícil de entender para los que no sean programadores.

- Requiere del uso de secuencias de escape para ciertos símbolos (para que coincida con una estrella, por ejemplo, se necesitaría escribir: `\*`).

- Requiere que recuerde reglas para la precedencia (¿Qué representaría `x|y*`? Una única `x` o cualquier número de `y`, O cualquier número de `x` e `y` mezcladas?).

Por otro lado, el editor de expresiones regulares le permite dibujar su expresión regular sin ambigüedades. El editor resuelve al menos elementos dos ó tres veces por encima. No puede hacer las expresiones regulares disponibles para los que no son programadores, ya que sólo las pruebas de los usuarios pueden decirle esto. Así, si no es un programador y ha alcanzado el dominio de las expresiones regulares desde este editor, por favor hágamelo saber.

## ¿Qué es una expresión regular?

Una expresión regular es una forma de especificar condiciones para hacerlas coincidir con las que tiene en mente. Normalmente, cuando busca en un editor de texto, especifica el texto para buscar literalmente; por otro lado, al usar expresiones regulares, puede decirle que se busque un patrón determinado dado. Ejemplos de estas búsquedas son Estoy buscando la palabra KDE, pero sólo al principio de la línea o Estoy buscando la palabra `el`, pero debe aparecer sola -no en medio de una palabra- o Estoy buscando archivos que empiecen con la palabra `prueba`, seguido por un número de dígitos, por ejemplo `prueba12`, `prueba107` y `prueba007`

Puede construir expresiones regulares a partir de expresiones regulares más pequeñas, tal y como se construyen juguetes Lego grandes desde partes pequeñas. Como en el mundo de Lego, hay un número de bloques de construcción básicos. En lo sucesivo, describiré cada uno de estos bloques de construcción básicos usando ejemplos.

Buscando un texto normal.

Si simplemente quiere buscar un texto dado, la expresión regular no es una buena elección. El motivo de esto es que las expresiones regulares asignan significado especial a algunos caracteres. Esto incluye los siguientes caracteres: `.*|$`. Por tanto, si quiere buscar el texto `kde.` (esto es, los caracteres `kde` seguidos por un punto), necesita especificar esto como`kde\.`

El editor de expresiones regulares soluciona este problema tomando en cuenta las reglas de escape por usted.

Escribir `\.` en lugar de`.` se llama escapar.

Coincidencia de URLs

Cuando seleccione algo que se parezca a una URL en KDE, el programa `klipper` le ofrecerá iniciar `konqueror` con la URL seleccionada.

`Klipper` hace esto haciendo coincidir la selección con varias expresiones regulares. Cuando una de las expresiones regulares coincide, el comando que se amolde a ella se le ofrecerá.

La expresión regular para URLs dice (entre otras cosas), que la selección debe comenzar con el texto `http://`. Esto se describe usando expresiones regulares que preceden al texto `http://` con un gorro (el carácter `^`).

El ejemplo de arriba es un ejemplo de coincidencia con posiciones usando expresiones regulares. De forma similar, la posición fin-de-línea se puede hacer coincidir usando el carácter `$` (esto es, un símbolo de dólar).

Buscar la palabra `el`, pero no en el `la`, `aqu` el ni `s` el `lo`

Se pueden hacer coincidir dos tipos de posición extra en la forma de arriba, llamadas la posición del límite de la palabra y posición no del límite de la palabra. Las posiciones se especifican usando el texto `\b` (para límite de palabra) u `\B` (para no límite de palabra)

Por tanto, la búsqueda de la palabra `el` se puede hacer usando la expresión regular `\bel\b`. Esto especifica que se está buscando `el` sin letras a los lados (esto es, sin una palabra limítrofe a cada lado)

Las cuatro posiciones que coinciden con expresiones regulares se insertan en el editor de expresiones regulares usando cuatro herramientas de posición diferentes

Buscar cada `este` o `ese`

Imagine que quiere recorrer su documento en busca de la palabra `este` o la palabra `ese`. Con un método de búsqueda normal puede hacerlo en dos barridas: en la primera, buscaría `este`; y en la segunda buscaría `ese`.

Al usar expresiones regulares, puede buscar ambos en la misma barrida. Puede hacer esto buscando `este|ese`. Esto es, separando las dos palabras con una barra vertical.

Fíjese en que a cada lado de la barra vertical hay una expresión regular, por tanto esta característica no es sólo para buscar dos o más partes de texto, sino para buscar dos expresiones regulares diferentes.

En el editor de expresiones regulares, no escriba la barra vertical por sí mismo, seleccione en su lugar la herramienta alternativa, e inserte las dos expresiones regulares una sobre otra.

Coincidir con cualquier cosa

Las expresiones regulares se suelen comparar con la coincidencia con comodines en el shell - esta es la capacidad de especificar un número de archivos usando el asterisco. Seguramente reconozca los comodines para coincidencias de los siguientes ejemplos:

- `rm *~` - here `*~` es el comodín de la shell para hacer coincidir con cada archivo que coincida con `~`

- cat test??.res - coincide con cada archivo que comience con `test` seguido de dos caracteres cualesquiera, y seguido finalmente con la prueba `.res`

En la shell, el asterisco coincide con cualquier carácter cualquier número de veces. En otras palabras, el asterisco coincide con cualquier cosa. Esto se escribe como `.*` en la sintaxis de las expresiones regulares. El punto coincide con cualquier carácter solo, esto es,un carácter, y el asterisco le dice a la expresión regular que lo que haya antes de él puede coincidir cualquier número de veces. En conjunto, esto dice cualquier carácter solo cualquier número de veces.

Esto puede parecer demasiado complicado, pero cuando tenga una perspectiva más lejana, verá el poder. Déjeme mostrarle otra expresión regular básica: `a`. La letra `a` por sí misma es una expresión regular que coincide con una sola letra, llamémosla la letra `a`. Si combinamos esto con el asterisco, esto es `a*`, entonces tenemos una expresión regular que coincide con cualquier número de aes.

Podemos combinar varias expresiones regulares tras cada otra, por ejemplo `ba(na)*`.

`(na)*` sólo dice que lo que está dentro del paréntesis se repite cualquier número de veces.

Imagine que ha tecleado esta expresión regular en un editor de texto, entonces debe encontrar las siguientes palabras (entre otras): `ba`, `bana`, `banana`, `bananananananana`

Dada la información de arriba, espero que no le sea duro escribir los comodines de la shell `test??.res` como una expresión regular. Respuesta: `test..\.res`. El punto por sí mismo es cualquier carácter. Para coincidir con un sólo punto puede escribir `\.`

Esto se llama escapar

. En otras palabras, la expresión regular `\.` coincide con un punto, mientras que el punto por sí mismo coincide con cualquier carácter.

En el editor de expresiones regulares, cada expresión regular repetida se crea usando la herramienta repetir

Reemplar `&` con `&amb;` en un documento HTML.

En HTML, el carácter especial `&` se debe escribir como `&amp;` - esto es similar a escapar en la expresión regular.

Imagine que ha escrito un documento HTML en un editor normal (por ejemplo, XEmacs or Kate), y olvidó completamente esta regla. Qué haría cuando se diera cuenta de su error al reemplazar cada ocurrencia de `&` con `&amp;`.

Esto se puede hacer fácilmente usando buscar y reemplazar texto normal, pero esto es algo tedioso. Imagine que recordaba esta regla - sólo un poco - y no lo hizo bien en algunas posiciones. El reemplazo incondicional haría que `&amp;` se reemplazara con `&amp;amp;`

Lo que verdaderamente quiere decir es que `&` sólo se debe reemplazar si no está seguido por las letras `amp;`. Puede hacer esto usando expresiones regulares con la búsqueda positiva.

La expresión regular, que sólo coincide con un subrayado si no está seguida por las letras `amp;` aparece así: `&(?!amp;)`. Esto es, por supuesto, más fácil de leer usando el editor de expresiones regulares, donde debe usar las herramientas de búsqueda.

## Usando el editor de expresiones regulares

Este capítulo le dirá cómo funciona el editor de expresiones regulares.

### La organización de la pantalla

La parte más importante del editor es, por supuesto, el área de edición. Esta es el área donde dibuja sus expresiones regulares. Este área es el área gris más grande del medio.

Sobre el área de edición tiene dos barras de herramientas, la primera contiene las acciones de edición - como las herramientas de dibujo en un programa de dibujo. La segunda barra de herramientas contiene el botón qué es esto, y los botones para deshacer y rehacer.

Bajo el área de edición encontrará la expresión regular construída actualmente, en la también llamada sintaxis ascii. La sintaxis ascii se actualiza mientras está editando la expresión regular en el editor gráfico. Si en vez de esto quiere actualizar la sintaxis ascii, hágalo, por favor. El editor gráfico se actualiza al vuelo para reflejar sus cambios.

Finalmente, a la izquierda del área del editor encontrará un número de expresiones regulares prefabricadas. Sirven para dos propósitos: (1) Cuando cargue el editor con una expresión regular, esta expresión regular se hace de forma más fácil o más comprensible al reemplazar las expresiones regulares comunes. En la captura de pantalla de arriba, puede ver cómo la sintaxis ascii ".*" se ha reemplazado por una caja que dice "cualquier cosa". (2) Cuando inserta una expresión regular, puede encontrar bloques de construcción para sus propias expresiones regulares en el juego de expresiones regulares prehechas. Vea la sección sobre expresiones regulares definidas por el usuario para aprender cómo guardar sus propias expresiones regulares.

### Herramientas de edición

El texto de esta sección supone que ha leído el capítulo sobre qué es una expresión regular, o que tiene un conocimiento previo de este asunto.

Todas las herramientas de edición se ubican en la barra de herramientas sobre el área de edición. Cada una de ellas se describe como sigue:

#### Herramienta selección

La herramienta de selección se usa para marcar elementos para copiar-y-pegar y arrastrar-y-soltar. Esto es muy similar a una herramienta de selección en cualquier programa de dibujo.

#### Herramienta texto

#### Herramienta carácter

Usando esta herramienta, puede insertar rangos de caracteres. Los ejemplos incluyen lo que en texto ASCII dice `[0-9]`, `[^a-zA-Z,_]`. Al insertar un elemento con esta herramienta, aparecerá un diálogo en el que puede especificar los rangos de caracteres.

Vea la descripción de expresiones regulares repetidas.

#### Herramienta cualquier carácter

Esta es la expresión regular «punto» (.). Coincide con cualquier carácter solo.

#### Herramienta repetir

Esta es la de los elementos repetidos. Esto incluye lo que en sintaxis ASCII se representa usando un asterisco (*), un más (+), una interrogación (?) y rangos ({3,5}). Cuando inserte un elemento usando esta herramienta, aparecerá un diálogo pidiéndole el número de veces para repetir.

Especifique qué repetir dibujando el contenido a repetir dentro de la caja que inserta esta herramienta.

Los elementos repetidos se pueden construir tanto fuera como dentro. Por esto es por lo que dibuja primero lo que quiere repetir, lo selecciona y utiliza la herramienta repetir para repetirlo. También puede insertar primero el elemento repetir y dibujar dentro de él lo que se deba repetir.

Vea la descripción de expresiones regulares repetidas.

#### Herramienta alternativa

Esta es la expresión regular alternativa (|). Debe especificar las alternativas dibujando cada alternativa encima de cada otra dentro de la caja que inserta esta herramienta.

Vea la descripción de expresiones regulares alternativas

#### Herramienta componer

La herramienta componer no representa ninguna expresión regular. Se utiliza para agrupar otras subpartes en una caja, lo que se puede colapsar fácilmente para ser sólo su título. Esto se puede ver en la parte derecha de la captura de pantalla de arriba.

#### Herramientas comienzo/fin de línea

Las herramientas de comienzo y fin de línea coinciden con el comienzo y el fin de la línea, respectivamente. La expresión regular de la captura de pantalla de arriba sólo debe coincidir con línea que sólo tienen espacios.

Vea la descripción de expresiones de posición regular.

#### Herramientas de (no) límite de palabra

Las herramientas de límites coinciden respectivamente o no con un límite de palabra. La expresión regular de la captura de pantalla coincide con cualquier palabra que comience con `el`. La palabra `el` por sí misma, sin embargo, no coincide.

Vea la descripción de expresiones regulares de límites.

#### Herramientas de búsqueda positiva/negativa

Las herramientas de búsqueda especifican una expresión regular positiva o negativa para coincidir. La coincidencia, sin embargo, no es parte de la coincidencia total.

Nota: Sólo se le permite ubicar búsquedas al final de las expresiones regulares. El elemento del editor de expresiones regulares no fuerza esto.

Vea la descripción de expresiones regulares de búsqueda.

### Expresiones regulares definidas por el usuario

A la izquierda del área de edición hay un cuadro de lista que contiene las expresiones regulares definidas por el usuario. Algunas expresiones regulares se preinstalan con su instalación de KDE, mientras que otras las puede guardar por sí mismo.

Estas expresiones regulares sirven para dos propósitos ( vea la descripción detallada), llamada (1) para ofrecerle un juego de bloques de construcción y (2) para hacer las expresiones regulares más bonitas.

Puede guardar sus propias expresiones regulares haciendo clic derecho con el botón del ratón en el área de edición y seleccionando `Guardar la expresión regular`.

Si la expresión regular que guarda tiene un contenedor compuesto, entonces la expresión regular tomará parte en hacer las subsiguientes expresiones regulares más bonitas.

Las expresiones regulares definidas por el usuario se pueden borrar o renombrar pulsando el botón derecho del ratón sobre la expresión regular en cuestión en el cuadro de lista.

## Informando de errores y sugiriendo características

Los informes de virus se realizan a través del sistema de seguimiento de fallos de KDE. Antes de que informe de un error o sugiera una característica, comprueba que nadie ha informado/sugerido de ella con anterioridad

## Preguntas de usuario frecuentes

### ¿Admite el editor de expresiones regulares referencias hacia atrás

No, por el momento no se admite. Está planificado para la siguiente versión.

### ¿Admite el editor de expresiones regulares la muestra de coincidencias?

No, pero con suerte estará disponible en la próxima versión

### Soy el autor de un programa de KDE, ¿cómo puedo usar este elemento en mi aplicación?

vea la documentación para la clase KRegExpEditorInterface

### No puedo encontrar el botón Editar expresión regular por ejemplo, en konqueror en otra instalación de KDE3, ¿por qué?

El elemento de expresión regular se ubica en el paquete KDE-utils. Si no ha instalado este paquete, los botones de editar expresiones regulares no aparecerán en los programas.

## Créditos y licencias

Copyright de la documentación 2001, Jesper K. Pedersen blackie@kde.org

&underGPL; &underFDL;