- Estréllate y Arde - https://www.estrellateyarde.org -

Expresiones regulares

Las expresiones regulares son una forma de describir patrones para la búsqueda de cadenas (dentro de otras o dentro de un archivo ASCII) y se crean combinando caracteres normales con caracteres especiales (wildcards).

Es una forma de trabajar con cadenas muy utilizada en prácticamente todos los lenguajes de programación (como Perl, PHP o JavaScript), en muchos comandos del shell (como grep, sed y awk) así como en archivos de configuración (como Apache o Lighttpd), y en general, son bastante complicadas por lo poco descriptivas que son en sí mismas.

En una expresióon regular podemos encontrar dos tipos de caracteres:

  1. caracteres normales: su significado es el habitual (literal). Por ejemplo:
    "b" significa "la letra b"
  2. caracteres especiales: tienen un significado especial. Por ejemplo:
    "$" significa "final de linea"

    Los caracteres especiales son los siguientes:

    \ [ ] { } ( ) * $ ? | + - . , ˆ

Podemos decirle al sistema que trate un carácter especial como si fuera un carácter normal y a la inversa. Para ello lo que haremos será preceder el carácter en cuestión con el carácter "\" y diremos que lo hemos "escapado". Veamos los dos casos:

  1. caracteres normales escapados: algunos caracteres normales adquieren un significado especial al ser escapados con el carácter "\". Por ejemplo:
    "\b" significa "principio o final de una palabra".
  2. caracteres especiales escapados: para incluir en el patrón de búsqueda algún carácter especial debemos decirle al sistema que lo trate como un literal escapándolo con "\". Por ejemplo:
    para buscar "\" hay que escaparlo, quedando "\\"
Expresiones regulares
Patrón Significado exp_reg match
Cadenas
. cualquier carácter excepto EOL ("nueva línea") "." cualquier carácter excepto EOL
\ carácter especial "\*"
"\\"
"*"
"\"
x un carácter "a"
"A"
"2"
"a"
"A"
"2"
xyz varios caracteres "hola" "hola"
x|y un carácter u otro "a|b" "a" o "b"
[xyz] un carácter que esté en una lista "[aeiou]" una vocal
[a-z] un carácter que pertenezca a un rango "[a-z]"
"[a-zA-Z]"
"[a-z][A-Z]"
una minúscula
una letra
una minúscula seguida de una mayúscula
[ˆx] cualquier carácter excepto "x" "[ˆa]" cualquier carácter excepto "a"
[ˆxyz] un carácter que no esté en una lista "[ˆaeiou]" una consonante
[ˆa-z] un carácter que no pertenezca a un rango "[ˆa-z]" una mayúscula
\w cualquier carácter alfanumérico incluyendo el guión bajo equivale a [a-zA-Z0-9_]
\W cualquier carácter no alfanumérico equivale a [ˆa-zA-Z0-9_]
\d cualquier dígito equivale a [0-9]
\D cualquier carácter no dígito equivale a [ˆ0-9]
\t tabulador
\r retorno de carro
\n final de línea
\s cualquier carácter no visible, como tabulador, retorno o espacio
\S cualquier carácter visible
i case insensitive, con este modificador no distinguirá entre mayúsculas y minúsculas "/una/i" busca "una" sin distinguir entre mayúsculas y minúsculas
g global, este modificador se usa para que no se detenga un proceso de sustitución al encontrar la primera ocurrencia "/a/g" encontrará todas las "a" para sustituirlas
(xyz) recuerda el patrón para su posterior utilización con multiplicadores o referencias "(x).(ab)" para referencias posteriores "x"=$1 y "ab"=$2
Anclas: posición de la cadena
ˆ comienzo de línea "ˆa"
"ˆ[aeiou]"
"ˆhola"
"a" al comienzo de una línea
una vocal al comienzo de una línea
"hola" al comienzo de una línea
$ final de línea "a$"
"[aeiou]$"
"hola$"
"ˆ$"
"a" al final de una línea
una vocal al final de una línea
"hola" al final de una línea
una línea vacía
\b principio o final de una palabra "\bola" "ola" al principio o final de una palabra
Multiplicadores: cuántas veces ha de aparecer la cadena
* una cadena cero o más veces "hola*"
"hol(as)*"
"[a-z]*"
"hol", "hola", "holaa"
"hol", "holas", "holasas"
una palabra en minúsculas
+ una cadena una o más veces "hola+"
"hol(as)+"
"hola", "holaa", "holaaa"
"holas", "holasas"
? una cadena cero o una vez "hola?"
"hol(a)?"
"hol", "hola"
"hol", "holas"
{n} una cadena n veces "a{3}"
"(as){3}"
"aaa"
"asasas"
{n,m} una cadena entre n y m veces "a{2,4}"
"(as){2,4}"
"aa", "aaa", "aaaa"
"asas", "asasas", "asasasas"
{n,} una cadena al menos n veces "a{2,}"
"(as){2,}"
"aa", "aaa", "aaaa"
"asas", "asasas", "asasasas"

Editor de expresiones regulares en el entorno gráfico

En el entorno gráfico disponemos de varios editores de expresiones regulares:

  • Kiki (pythonide.stani.be, paquete kiki): herramienta escrita en Python que permite comprobar expresiones regulares contra un texto de ejemplo (es el editor de expresiones regulares del IDE para Python SPE, Stani's Python Editor).

    Kiki

  • Kodos (kodos.sourceforge.net, paquete kodos): herramienta en Python que permite crear y probar expresiones regulares contra un texto de ejemplo.

    Kodos

  • Redet (billposer.org/Software/redet.html, paquete redet): herramienta para crear y probar expresiones regulares contra un texto de ejemplo con soporte para numerosos lenguajes de programación.

    Redet

  • Visual REGEXP (laurent.riesterer.free.fr/regexp/, paquete visual-regexp): herramienta en TCL que permite crear y probar expresiones regulares contra un texto de ejemplo.

    Visual REGEXP

  • Kregexpeditor (KDE Regular expressions editor, paquete kregexpeditor): editor gráfico de expresiones regulares de KDE.

    Kregexpeditor


Article printed from Estréllate y Arde: https://www.estrellateyarde.org

URL to article: https://www.estrellateyarde.org/discover/expresiones-regulares

Copyright © 2010 Estrellate y Arde