Introducción a las expresiones regulares
Las expresiones regulares son bastante comunes en la programación de computadoras. Pero también están disponibles para los usuarios finales. Por ejemplo, si está tratando con PowerShell o el comando Findstr, puede hacer uso de ellos. Y hay utilidades de terceros (como Agent Ransack y EditPad) que admiten expresiones regulares. Dado que son tan útiles en muchos entornos diferentes, decidí que debería darles un consejo.
Una expresión regular es una cadena, que a menudo consta de caracteres especiales, diseñada para coincidir con un patrón de búsqueda. Por ejemplo, si usamos el comando Findstr, podemos buscar la palabra «documento»
seguido inmediatamente por una coma o un punto especificando la cadena de búsqueda «documento [,.]». Los caracteres especiales en este caso son los corchetes, lo que significa que cualquiera de los caracteres adjuntos debe seguir a la palabra «documento».
Hay muchos caracteres especiales que se pueden usar en una expresión regular. Muchos de los cuales se enumeran a continuación:
Character |
Description |
|
Match 0 or more characters. Example: haven matches both heaven and haven. |
||
+ |
Match 1 or more characters. Example: he+aven matches heaven and heeaven but not haven. |
|
^ |
Match what follows only if it’s at the beginning of the string. Example: if your regular expression is ^document, it will match document in the string «document the requirements», but it will not match anything in the string «this is a requirements document». |
|
$ |
Match what precedes only if it’s at the end of the string. Example: if your regular expression is document$, it will match document in the string «this is a requirements document», but it will not match anything in the string «document the requirements». |
|
\d |
Match a digit. Example: \d matches each digit individually in the string «my degree is from 1987». If you want to match all four digits at once, just repeat the \d like \d\d\d\d. |
|
. |
Match any single character. The period is like a wildcard in that it will match anything. |
|
(a |
b) |
Para ver las expresiones regulares en acción, combinemos algunas y usemos el comando Findstr para encontrar ocurrencias de cadenas en un archivo. Tengo un archivo llamado Barry.tmp que contiene el siguiente texto:
Video provides a powerful way to help you prove your point. When you click Online Video, you can paste in the embed code for the 20 or 30 videos you want to add. You can also type a keyword to search online for the video that best fits your document.
Usemos Findstr para encontrar cadenas de dígitos en el archivo: (Ver Figura 1.)
Figura 1. Búsqueda de cadenas de dígitos.
Permítanme presentarles un par de conceptos más. Puede utilizar un par de corchetes para delimitar un rango de caracteres a buscar. Por ejemplo, especificar _ [a-z] _ coincidirá con cualquier carácter alfabético. También es digno de mención que usa el carácter de barra invertida (\) para «escapar» del carácter que sigue y tratarlo literalmente. Esto es útil si desea encontrar un carácter que de otro modo se trataría como parte de la expresión regular. Armados con estas dos piezas de información, ahora podemos buscar en nuestro archivo un carácter alfabético seguido de un punto, es decir, encontrar líneas que sean finales de oraciones: (Ver Figura 2.)
Figura 2. Búsqueda de finales de oraciones.
Permítanme terminar con una advertencia: en mi experiencia, el motor de expresiones regulares utilizado en la línea de comandos de Windows es un poco diferente de la mayoría de los motores de expresiones regulares. Las expresiones regulares que deberían funcionar (y que funcionan en otras utilidades) pueden no funcionar como se esperaba en la línea de comandos. Entonces, sabiendo que su millaje puede variar, experimente con ellos, pero no apueste su próximo cheque de pago a que lo que ingresó funcionará como se esperaba.
Este consejo (1364) se aplica a Windows 7, 8 y 10.