Corregir un texto (I): las expresiones regulares

Si recuerdan, hace unos días estuvimos viendo las reglas básicas de las acotaciones en los diálogos, cuyo conocimiento es imprescindible (pero no suficiente, claro está) para que alguien enfrente nuestro texto con seriedad. Les comentaba que aunque algunas de las reglas eran sencillas de buscar con Word, otras no lo eran tanto. Ahí es donde entran las expresiones regulares, que a lo largo de esta serie de entradas verán que son de gran ayuda para detectar esos errores que dejan el texto en evidencia.

Una expresión regular es, según la Wikipedia, una secuencia de caracteres que forma un patrón de búsqueda. No sé si eso les dice algo, pero lo entenderán enseguida. Pero primero vamos a organizar un poco la mesa de trabajo. 

Ingredientes

  1. Aunque no es necesario que sean unos maestros de la informática, sí que es necesario que tengan un mínimo de soltura. Y es un mínimo muy bajo.

  2. Necesitaremos el texto a corregir, en versión borrador final. Esto es importante porque lo que vamos a hacer es buscar los errores que no hemos detectado tras muchas lecturas, esos que no aparecen aunque lo leas mil veces. Una vez encontrados, los corregiremos manualmente en el borrador. Si nos ponemos a buscar errores en un primer borrador, saldrán tantos que no será útil.

  3. Necesitamos que el texto no esté en un PDF, sino en Word, txt, rtf, html, lo que quieran, pero no PDF. Enseguida verán por qué.

  4. Por último, necesitamos un editor que soporte las expresiones regulares. Aunque Word sí tiene la opción de utilizar caracteres comodín, lo hace un poco por libre y creo que limita algunas de las búsquedas. En mi caso, utilizo Notepad++, aunque otros como Sublime Text o EditPadPro también lo hacen. Escojan el que escojan, lo descargan y lo instalan.

Preparando el editor

Vamos allá.

Lo primero es abrir nuestro borrador, copiar el texto y pegarlo en el editor que vayamos a utilizar. Al hacerlo, vamos a perder cualquier estilo que hayamos aplicado, como la cursiva, que es la razón de que no podamos corregir sobre el texto. Por tanto, lo que vamos a hacer es buscar errores y luego iremos al borrador a corregirlos.

También necesitamos que el texto que copiamos esté en un formato editable, si no sucede lo siguiente:

El problema es que al copiar el texto en PDF, se copia exactamente igual que aparece en pantalla, por lo que las palabras que están divididas en guiones, se quedan divididas y por tanto, si buscamos una palabra que está dividida en dos líneas por un guion, no la encontraremos.

Lo siguiente es activar el ajuste de línea. ¿Por qué? Porque un párrafo de texto es en realidad una misma línea que continúa hasta que hay un salto de línea, aunque los editores como el Word lo presenten como varias líneas. Debajo, un ejemplo:

Bien, está claro. Activamos el ajuste de línea yendo al menú "Vista" y marcando la opción "Ajuste de línea". No tiene mucho secreto, pero por si acaso, una imagen:

Ajuste de línea.JPG

A partir de aquí estamos listos. Ahora vamos al menú "Buscar", y pinchamos en la primera opción, "Buscar" (también vale CTRL+F). En esa ventana vamos a ir a la pestaña "Mark", y marcamos lo que se muestra en la imagen: 

  • Coincidir MAYÚSCULAS/minúsculas.

  • Buscar en todo el documento.

  • Expresión regular.

La diferencia entre "Buscar" y "Mark" es que con "Mark" nos coloreará las coincidencias que haya encontrado, y una vez comprobado que hemos buscado lo que queríamos, podremos ir a "Buscar" e ir una por una.

pantalla2.png

Las expresiones regulares

Aunque las imágenes parezca que hemos hecho mucho, en realidad todo lo anterior es bastante rápido y solo es necesario hacerlo una única vez. Ahora es cuando viene lo interesante. 

Podemos decir que una expresión regular es una cadena de "comodines" que el editor utiliza para buscar patrones. Aunque más adelante veremos más, por hoy nos vamos a conformar con unos pocos:

  • [A-Z] coincide con cualquier letra mayúscula... menos las nuestras, que habrá que añadir, y por tanto quedará [A-ZÁÉÍÓÚÑ]. No obstante, si buscamos un conjunto de letras, serán solo esas las que incluyamos dentro de los corchetes.

  • En el caso de las minúsculas, lo mismo: [a-záéíóúñ].

  • Los números los encontramos con [0-9], aunque podemos especificar los que buscamos.

  • El carácter especial ^ representa el comienzo de una línea.

  • El carácter especial $ representa el final de una línea.

  • El carácter especial * representa 0 o más instancias del carácter anterior. Por ejemplo, si ponemos en la caja de búsqueda la expresión regular Ju*an, buscará Jan, Juan, Juuan, Juuuan, etc.

  • El carácter \s representa un espacio, aunque también podemos poner un espacio :)

Si queremos buscar alguno de los caracteres especiales, lo único que tenemos que hacer es añadirles una barra invertida delante: \^ o \$.

Según lo que hemos visto, por ejemplo, la expresión [A-ZÁÉÍÓÚÑ][a-záéíóúñ]$ buscará todas aquellas líneas que acaban con una mayúscula seguida de una minúscula.

Del mismo modo, la expresión ^[0-9][abc][45][ABC] buscará todas aquellas líneas que comienzan por un dígito, seguido de 'a', 'b' o 'c', seguida de '4' o '5' y por último seguida de 'A', 'B' o 'C'. Por ejemplo, encontrará una línea que comienza con la cadena "2a5A". No obstante, no la encontrará si no está al principio de la línea ni si es por ejemplo "2ab5A", porque entre los dos dígitos solo puede haber una letra.

Eso no nos ayuda mucho, pero vamos a buscar un par de ejemplos un poco más reales. 

Ejemplo 1

En este primer ejemplo, vamos a buscar todas las líneas (o párrafos, si lo quieren ver así) de nuestro texto que no empiezan con mayúscula. La expresión regular es sencilla: ^[a-záéíóúñ].

Líneas que no comienzan en mayúscula

Como vemos, nos colorea en rojo los "matches" o coincidencias, y nos indica cuántas ha encontrado. Si el texto fuese mayor, iríamos a la pestaña "Buscar" e iríamos una por una.

Ejemplo 2

El segundo ejemplo es igualmente sencillo. Vamos a buscar aquellas palabras que tras una coma, comienzan por mayúscula, con independencia de que tras la coma haya o no un espacio (eso lo veremos más adelante). La expresión sería: ,\s*[A-ZÁÉÍÓÚÑ].

Es decir, una coma, seguida de 0 o más espacios, y una letra mayúscula.

Mayúscula tras una coma, con independencia del número de espacios que haya tras la coma.

Mayúscula tras una coma, con independencia del número de espacios que haya tras la coma.

Como vemos, nos colorea todas aquellas coincidencias donde hay una coma, cero o más espacios, y una mayúscula.

En la siguiente entrada veremos otros "comodines" y empezaremos a buscar cosas un poco más serias. Permanezcan a la escucha y si tienen dudas o quieren proponer ideas, háganlo en los comentarios.