Centro de Información

Expresiones Regulares

Las expresiones regulares son una herramienta poderosa para buscar texto, así como para buscar y reemplazar texto. Con la ayuda de expresiones regulares y editores de texto adecuados, como el TextConverter, la edición de textos se puede hacer mucho más fácil. Sin embargo, para poder trabajar con expresiones regulares, necesita el conocimiento de algunos conceptos básicos que se resumen en este tutorial.

Este artículo está dividido en las siguientes secciones a las que puedes saltar directamente:

¿Qué es una Expresión Regular?

La aplicación de una expresión regular corresponde a una búsqueda, que puede ser más general que una búsqueda normal. Por ejemplo, si busca "A" en un texto normal, puede encontrar todos los lugares donde se produce exactamente la "A". Pero, ¿qué podemos hacer si queremos encontrar todos los lugares que tienen letras mayúsculas? Puede buscar para "A", para "B", para "C" y así sucesivamente. O puede usar expresiones regulares. La expresión regular corta [A-Z] es lo mismo que buscar cada uno de los caracteres individuales de la A a la Z. Puede hacerlo tan preciso como quiera. Puede buscar una fecha arbitraria, una dirección de correo electrónico arbitraria o lo que desee. Cómo hacerlo aprenderá en esta compilación.

Las áreas de aplicación son, por ejemplo, programas de edición de texto y de archivos de texto, como el Text Converter, con el cual es posible eliminar o reemplazar textos con la ayuda de expresiones regulares o usar los textos encontrados para usarlo en otro contexto o posición. Por ejemplo, para cambiar el formato de una fecha o para convertir cualquier dirección de correo electrónico de un texto en un enlace. Una búsqueda normal tenía que saber todas las direcciones de correo electrónico posibles para eso, lo que es imposible.

Conceptos Básicos

En esta tabla puede encontrar las convenciones y los caracteres más importantes, así como sus significados. Los 15 caracteres [ ] ( ) { } | ? + - * ^ $ \ y . son metacaracteres y tienen un significado especial dentro de las expresiones regulares, que se explican en las siguientes secciones. Si desea utilizar uno de estos caracteres como este carácter en una expresión regular, puede usar un \ delante del carácter para escapar del carácter de su significado como carácter meta. Todos los demás caracteres pueden usarse en una expresión regular como tal.

Expresión Regular Significado y Ejemplo
a La expresión regular "a" también coincide con "a". Siempre que el carácter no sea un metacaracteres con otro significado, se puede usar directamente en la expresión regular.
Ejemplo: abc defg abcdefgbafcgbde 0123456789
[abc] Los corchetes [ y ] se pueden utilizar para definir un grupo de caracteres. El ejemplo encuentra uno de los caracteres a, b o c.
Ejemplo: abc defg abcdefgbafcgbde 0123456789
[a-f]El guión - se puede utilizar para definir un rango de caracteres. El ejemplo encuentra uno de los caracteres a, b, c, d, e o f. También en este ejemplo, la expresión regular solo coincide con un carácter.
Ejemplo: abc defg abcdefgbafcgbde 0123456789
[0-9]El guión también se puede utilizar para definir un rango de números. El ejemplo encuentra los números del 0 al 9.
Ejemplo: abc defg abcdefgbafcgbde 0123456789
[A-Z0-9abc] Dentro de un grupo de caracteres, se pueden usar rangos y caracteres únicos. En el ejemplo, el grupo consta de las letras mayúsculas de la A a la Z, los dígitos del 0 al 9 y las letras minúsculas a, b y c.
Ejemplo: abc defg abcdefgbafcgbde 0123456789 -&
[^a]Con el carácter meta ^ al principio de un grupo de caracteres, el grupo de caracteres se niega. Eso significa que, el ejemplo coincidirá con cualquier carácter pero no con un a.
Ejemplo: abc defg abcdefgbafcgbde 0123456789
^aSi el metacarácter ^ no se incluye en un grupo de caracteres, significa el comienzo de una cadena o una línea. El ejemplo coincidiría con todas las líneas o cadenas que comienzan con a.
Ejemplo: abc defg abcdefgbafcgbde 0123456789
a$Así como el metacarácter ^ representa el comienzo de una cadena o línea, el carácter $ representa su final. Así que todas las cadenas que terminan con una a se encontrarían.
Ejemplo: abc defg abcdefgbafcgbde 0123456789a
^abc$ Aquí los metacaracteres ^ y $ se usan juntos. Este ejemplo coincidiría con todas las cadenas o líneas que son iguales a "abc".
Example 1: abc
Example 2: abc abc
\b Representa la posición al principio o al final de una palabra.
\BRepresenta una posición que no está al principio o al final de una palabra.
\babc\bEncuentra la única palabra "abc", pero no la cadena "abc", cuando está rodeada por otros caracteres.
Ejemplo: abc abcde abc deabcde deabc abc
\babc Encuentra todas las palabras que comienzan con "abc".
Ejemplo: abc abcde abc deabcde deabc abc
abc\b Encuentra todas las palabras que terminan con "abc".
Ejemplo: abc abcde abc deabcde deabc abc
\Babc\BBusca todas las palabras que contienen "abc", pero que no comienzan ni terminan con "abc".
Ejemplo: abc abcde abc deabcde deabc abc
abc\B Busca todas las palabras que contienen "abc", pero no termina con "abc".
Ejemplo: abc abcde abc deabcde deabc abc
ABC|abc El carácter | representa una alternativa. Este regex encontrará "ABC" y "abc".
Ejemplo: abcde ABCDE fgabcde FGABCDE
[a\-f]Si hay un \ delante de un meta carácter, se escapa el significado de este meta carácter. En este caso, el metacarácter no representa un rango, pero se utiliza como propio carácter. Entonces, el ejemplo coincide con los caracteres a, f y -. En otras palabras, con el carácter \ es posible agregar metacaracteres a los grupos de caracteres.
Ejemplo: abcdefg abcdefgh -
1\+1=2Esta expresión regular coincide con la cadena 1+1=2. De nuevo, el carácter meta + se escapa con \.
Ejemplo: 1+1=2 1\+1=2
[-af]Cuando un metacarácter se encuentra dentro de un grupo de caracteres en una posición sin significado, se utiliza como carácter normal. El ejemplo coincide con los caracteres -, a y f.
Ejemplo: abcdefg abcdefgh -
[af-]Lo mismo se aplica a - al final de un grupo.
Ejemplo: abcdefg abcdefgh -
ab[cd] En este ejemplo, un carácter de un grupo de caracteres se combina con "ab". Entonces, el ejemplo coincide con las cadenas "abc" y "abd".
Ejemplo: abcdef abdef cdabcd cdabdc
.El punto representa un carácter arbitrario. Cada carácter será encontrado con esta expresión regular. Depende del modificador, si se incluyen los saltos de línea.
Ejemplo: abc defg abcdefgbafcgbde 0123456789 -&
.abCoincide con cualquier cadena con tres caracteres de los cuales los dos últimos caracteres son a y b, por ejemplo aab, eab, %ab, :ab, etc.
Ejemplo: abc dfgabc &ab fgxab
[^a]ab Encuentra las mismas cadenas que la expresión regular ".ab" excepto la cadena "aab".
Ejemplo: aab cab dd dab fg &ab

Si desea probar una expresión regular introducida en esta página, puede usar el software Text Converter para esto. Simplemente abra un archivo de texto arbitrario en esta herramienta y haga clic en Buscar y Reemplazar en la columna más a la derecha. Aquí puede activar expresiones regulares en el cuadro de búsqueda. Después de eso, puede escribir una expresión regular para probar cómo funciona.

Repeticiones

Para describir situaciones en las que hay repeticiones de caracteres o clases de caracteres completos, puede utilizar algunos de los siguientes metacaracteres.

Expresión RegularSignificado y Ejemplo
ab{2} El elemento anterior debe aparecer exactamente dos veces. En este ejemplo, esto solo corresponde a abb. La a no se agrega con un gancho a una clase con la b, por lo que la expresión repetida solo afecta a la b y no a la a.
Ejemplo: a ab abb babb abbb abbbb babbbbbbbbbbd
ab{2,3} El elemento anterior debe aparecer al menos dos veces y como máximo tres veces. Esta expresión regular encontraría abb, abbb, pero no ab o abbbb.
Ejemplo: a ab abb babb abbb abbbb babbbbbbbbbbd
ab{2,}El elemento anterior debe aparecer al menos dos veces. El ejemplo corresponde a  abb, abbb, abbbb y así sucesivamente.
Ejemplo: a ab abb babb abbb abbbb babbbbbbbbbbd
ab{,3} El elemento anterior no debe aparecer más de tres veces. El ejemplo corresponde a abbb y abbbb pero no a abbbbb.
Ejemplo: a ab abb babb abbb abbbb babbbbbbbbbbd
ab?El signo de interrogación indica que el carácter anterior es opcional. Esto significa que el elemento anterior puede aparecer, pero no es necesario que aparezca. El ejemplo encontraría a y ab. El signo de interrogación corresponde a la expresión {0,1}.
Ejemplo: a ab abb babb abbb abbbb babbbbbbbbbbd
ab+El signo más indica que el elemento anterior debe aparecer al menos una vez, pero también varias veces. El ejemplo correspondería a ab, abb, abbb y así, pero no a. El signo más es lo mismo que la expersión {1,}.
Ejemplo: a ab abb babb abbb abbbb babbbbbbbbbbd
ab*El carácter * significa que el carácter anterior debe aparecer cero o más veces. Es lo mismo que la expresión {0,}.
Ejemplo: a ab abb babb abbb abbbb babbbbbbbbbbd
[ab]+Este ejemplo encuentra cadenas como a, b, ab, ba, abb, ababa así sucesivamente. Esto no significa que se deba repetir el mismo carácter anterior. Esto significa que los carácteres del grupo deben ser repetidos. Si desea encontrar repeticiones del mismo carácter, debe usar referencias anteriores. La expresión regular sería ([ab])\1+ y se explicará a continuación.
Ejemplo: a ab abb babb abbb abbbb babbbbbbbbbbd
a[bc]+dEsta expresión encuentra cadenas como abd, acd, abcd, acbd, abccbd, acbcbcbd así sucesivamente.
Ejemplo: abcd aad acbd fg abbccbbcd fg abd fg acd
[0-9]{2,3} También en este ejemplo, no es necesario que se repitan los mismos dígitos. La expresión corresponde a todos los números con dos o tres dígitos, por lo que los números del 10 al 999. Cadenas como 1,2 no serán encontradas por esta expresión.
Ejemplo: 1,4 10 89 ab3a ab42a 234

Clases de Caracteres

Detrás de la creación de grupos de caracteres propios entre corchetes, también hay algunas clases de caracteres predefinidas. Con estas clases, las expresiones regulares se vuelven más cortas y claras.

Expresión RegularSignificado y Ejemplo
\dEsta expresión representa un dígito, por lo que es equivalente a [0-9].
Ejemplo: abc defg abcdefgbafcgbde 0123456789 -&
\DEsta expresión representa un carácter que no es un número. Esto sería [^0-9] o [^\d].
Ejemplo: abc defg abcdefgbafcgbde 0123456789 -&
\wEsta expresión (word) representa una letra, un número o un guión bajo. Por lo tanto, \w coincide con la clase de caracteres [A-Za-z0-9_].
Ejemplo: abc defg abcdefgbafcgbde 0123456789 -&
\WEsta expresión representa cualquier carácter que no sea un número, una letra o un guión bajo. Es lo mismo que [^\w] o [^A-Za-z0-9_].
Ejemplo: abc defg abcdefgbafcgbde 0123456789 -&
\sEsta expresión corresponde a whitespace, por ejemplo, un salto de línea, una pestaña, un espacio, etc.
\SEsta expresión representa cualquier carácter que no sea whitespace, es lo mismo que [^s].

Agrupación y Referencias Posteriores

Con los paréntesis ( y ), puede agrupar algunos caracteres, por ejemplo, para aplicar un operador a todo el grupo. Además, con los paréntesis puede crear referencias posteriores. Eso significa que los caracteres que se encuentran en este paréntesis se almacenarán, de modo que pueda reutilizarlos en la misma expresión regular o incluso en la expresión regular de reemplazo, cuando busque y reemplace con expresiones regulares. Los ejemplos muestran algunas de las posibilidades, que debe probar en un programa como Text Converter para tener una idea de estas expresiones.

Expresión RegularSignificado y Ejemplo
(ab)+ El grupo entero "ab" se repite una o más repeticiones de "ab" será encontrado.
Ejemplo: abcde ababcde ababababa
ab(cd|ef|gh)i Entre los paréntesis, hay algunas alternativas. Este ejemplo coincide con las cadenas "abcdi", "abefi" y "abghi", pero no otras cadenas.
Ejemplo: abcdifg abcdefghi abghi
([ab])\1+ Aquí, se utiliza la referencia posterior \1. Cada paréntesis crea una referencia de este tipo, el 1 corresponde al primer paréntesis de la expresión. La expresión significa que la letra encontrada en el grupo [ab] debe repetirse una o más veces después del grupo. Por lo tanto, esta expresión corresponde a "aa", "bb", "aaa", "bbb" y así sucesivamente.
Ejemplo: aaaacd efbbbbbbbbghab
([ab])x\1x\1 La referencia también se puede utilizar varias veces. Esta expresión corresponde a "axaxa" y "bxbxb".
Ejemplo: axaxa axax bxbxb axbxa
([ab])x(c)x\1x\2 En esta expresión, se utilizan dos referencias \1 y \2, que corresponden al primer y segundo paréntesis. Las cadenas "axcxaxc" y "bxcxbxc" coincidirán con esta expresión.
Ejemplo: axcxaxc axax bxcxbxc axbxa
([ab])x(c)x\2x\2 No es necesario utilizar cada de las referencias resultantes de los paréntesis en la expresión. Aquí, solo se utiliza la segunda referencia.
Ejemplo: axcxcxc axax bxcxcxc axbxa
(\d+\.)(\d+\.) Las referencias no solo se pueden utilizar en una sola expresión regular. Con el Text Converter, puede buscar una cadena con una expresión regular y reemplazarla con referencias como $1, $2, etc. Si escribe el ejemplo en el campo de búsqueda y lo reemplaza con $2$1, la fecha encontrada se anulará. Tenga en cuenta que debe habilitar expresiones regulares para la búsqueda y reemplazar los cuadros debajo de los cuadros.
Ejemplo: "11.04." will replaced by "04.11."
\ba\b\s\b([aoeiu][a-z]+)\b Con esta expresión regular, puede encontrar todas las palabras simples "a" seguidas por otra palabra que comienza con a, o, e, i o u. En inglés, no está permitido escribir una "a" delante de una palabra que comienza con una vocal. Puede usar la expresión regular "an $1" en el Text Converter para corregir este error.
Ejemplo: "a idea" será reemplazado por "an idea"

Modificadores

El comportamiento de las expresiones regulares puede ser modificado por modificadores. Si desea modificar estos modificadores en el Text Converter en general, puede acceder al menú "Settings > Settings regarding regular Expressions (RegEx)", donde se pueden modificar todos los modificadores. Sin embargo, también es posible aplicar diferentes modificadores para una sola expresión o incluso aplicar modificadores solo a una parte de una expresión. Cómo funciona, aprenderá en la segunda parte de esta sección. Los siguientes modificadores se pueden modificar en el Text Converter:

Si un modificador solo se debe usar para una expresión regular única o para una parte de una expresión regular, puede usar los siguientes métodos para modificar los modificadores. Los modificadores mencionados anteriormente se nombran por sus letras, lo que significa que deben usarse las letras i, m, s, g o x.

Expresión RegularSignificado y Ejemplo
(?i)[abc] En este ejemplo, puede ver cómo activar un modificador. En este ejemplo, el modificador i para la insensibilidad a los casos de mayúsculas y minúsculas.
Ejemplo: abcdef ABCDEF
(?i)[a](?-i)[cd] Al usar (?-I), se deshabilita un modificador. En el ejemplo, el modificador i se activa primero, se encontrarán las letras a y A. Después de deshabilitar el modificador i, c y d deben estar en minúsculas para coincidir con esta expresión.
Ejemplo: ac Ac AC ad Ad AD
((?i)[a])[cd] Con paréntesis, puede lograr los mismos resultados. Por supuesto, i debe ser discapacitado en general en este ejemplo.
Ejemplo: ac Ac AC ad Ad AD
(?ig-msx)[abc] Si desea modificar varios modificadores al mismo tiempo, también puede hacerlo en una sola expresión. Otras posibilidades son (?ims) para activar algunos modificadores o (?-ims) para deshabilitar varios modificadores.

Unicode

A menudo se pregunta si y cómo usar caracteres Unicode en expresiones regulares. Por ejemplo, caracteres chinos o letras del alfabeto cirílico o griego. Originalmente, las expresiones regulares solo se usaban para los caracteres ANSI, y muchos programas que usan expresiones regulares todavía admiten solo el rango de caracteres ANSI. Sin embargo, esto no se aplica al Text Converter. En este software, puede usar caracteres Unicode arbitrarios de la misma manera, de la misma manera que usa caracteres ANSI. Los siguientes ejemplos muestran cómo funciona esto y cómo puede usar los caracteres Unicode.

Expresión RegularSignificado y Ejemplo
[Д-И] En el Text Converter, puede usar los caracteres Unicode de la misma manera que usa caracteres ANSI o ASCII. El ejemplo utiliza el rango Д a И del alfabeto cirílico en un grupo de caracteres.
Ejemplo: АБВГДЕЖЗИКЛ
Caracteres especiales arbitrarios que puede utilizar como en este ejemplo. Aquí está el caracter para el infinito.
Ejemplo:
\x{221E} Alternativamente, también puede usar el código HEX de Unicode para un caracter. Este código es 221E para el símbolo infinito y se usa como expresión regular en el ejemplo.
Ejemplo:
\x41 Aún en el rango ASCII, puede usar el código HEX en lugar del carácter. Esto es especialmente útil cuando observa pestañas u otros caracteres que no se pueden escribir directamente. En el ejemplo, se muestra el código hexadecimal de A (código 41). Una tabla con todos los códigos HEX que puede obtener en esta tabla ASCII.
Ejemplo: ABC ABCABC
[\x{0001}-\x{221E}] Los caracteres definidos con el código HEX de esta manera se pueden utilizar como cualquier otro carácter en la sintaxis de expresión regular. En el ejemplo, se define un grupo de caracteres. Este intervalo incluye todos los caracteres hasta el símbolo del símbolo infinito. Esto incluye caracteres latinos, griegos y cirílicos, pero no caracteres japoneses.
Ejemplo: ABCGHJΔΨΩБВГДЕЖカモヤモ

Ejemplos

Con el conocimiento escrito en esta página, puede escribir expresiones regulares arbitrarias por su cuenta, combinando las reglas a su manera. Como ejemplo, se analizará la siguiente expresión regular. Esta expresión regular se puede utilizar para encontrar una dirección de correo electrónico arbitraria desde cualquier texto:

\b[a-zA-Z0-9._+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}\b

Como puede ver, la expresión regular está redondeada por \b. Esto significa que la dirección de correo electrónico debe ser una palabra única y no redondeada por otros caracteres en el texto. La estructura de una dirección de correo electrónico es nombre@dominio.fin. Como puede ver en la expresión regular, hay un grupo de caracteres antes de @, en el que los caracteres deben repetirse al menos una vez (+). Este grupo de caracteres corresponde al elemento "nombre" de la dirección de correo electrónico. Después de la @, hay otros dos grupos de caracteres. Una para el dominio y otra para el fin. Estos grupos están divididos por un punto. Dado que el punto es un metacarácter en expresiones regulares, se ha transformado en un carácter normal utilizando \. El grupo de caracteres del dominio puede contener un número arbitrario de caracteres, pero al menos un carácter (+) y el grupo de caracteres del sufijo de dominio deben contener al menos 2 y como máximo 4 caracteres. Esto se indica mediante {2,4} detrás del grupo de caracteres.

Con la expresión regular en el ejemplo, encontrará direcciones de correo electrónico en los textos. ¿Pero cómo puede trabajar con esta expresión regular? Por ejemplo, en un programa como el Text Converter, puede usar la expresión para buscar y reemplazar textos. Simplemente vaya a la acción "Reemplazar texto" y active las expresiones regulares debajo del cuadro para el término de búsqueda o reemplazo. Si usa nuestro ejemplo, puede ingresar texto que reemplazará la dirección de correo electrónico. Una vez más, se puede utilizar una expresión regular. Por ejemplo, puede usar las siguientes expresiones regulares:

Término de Búsqueda: (\b[a-zA-Z0-9._+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}\b)
Reemplazar con: <a href="mailto:$1">$1</a>

Con esto, la dirección de correo electrónico encontrada será reescrita como un enlace. Sin embargo, la expresión en el campo de búsqueda primero debe estar rodeada por paréntesis. Solo puede reutilizar los textos encontrados del campo de búsqueda en el campo de reemplazo si rodea el texto correspondiente entre paréntesis. Los paréntesis pueden incluir partes arbitrarias del término de búsqueda. Esto hace que muchas otras cosas sean posibles. Por ejemplo, podemos probar la siguiente combinación:

Término de Búsqueda: .*(\b[a-zA-Z0-9._+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}\b).*
Reemplazar con: $1

Con esto, busca una dirección de correo electrónico que pueda contener otros caracteres (.*). Por lo tanto, se encontrará todo el texto, incluida la dirección de correo electrónico. Pero solo será reemplazado por la cadena encontrada por el término entre paréntesis, es decir, el correo electrónico. Puede extraer una dirección de correo electrónico de un texto con esta expresión regular.

Si usa varios paréntesis en su término de búsqueda, puede apuntar y reutilizar las diferentes secciones con $1, $2, $3, etc. Un ejemplo:

Término de Búsqueda: (.*)buscar(.*)
Reemplazar con: $1reemplazar$2

En este ejemplo, estamos buscando el texto delante y detrás de la cadena "buscar". Todo esto se reemplazará con el texto delante y detrás de palabra "buscar" y la palabra "reemplazar" se escribirá entre estos textos. Esta expresión regular hace algo, que puede hacerse mucho más fácilmente. La expresión solo reemplaza la palabra "buscar" con "reemplazar". Pero si cambia esta expresión un poco, por ejemplo, puede buscar diferentes ortografías de una palabra o crear otros patrones de búsqueda más complicados.

Servicio de Expresión Regular

¿Necesita ayuda para crear una expresión regular? Estamos felices de ayudar. Simplemente escríbanos a través de nuestro formulario de contacto. El precio de nuestro servicio depende de la complejidad de su proyecto. Solo dénos una breve descripción de lo que planea hacer. Por supuesto, su solicitud no será vinculante.

Software para expresiones regulares

Si desea utilizar las expresiones regulares introducidas en esta página para trabajar en archivos de texto, puede usar el software Text Converter para esta tarea. El Text Converter le permite buscar archivos de texto basados ​​en expresiones regulares, reemplazar expresiones regulares con otros textos o expresiones, eliminar partes del texto usando expresiones regulares o separar archivos de texto en la posición encontrada para guardar los archivos como archivos individuales. Por supuesto, con este programa, también es posible utilizar partes coincidentes en otro contexto o en otro orden (referencias anteriores).

El Easy MP3 Player es otro programa con el que puede buscar en su colección de música con expresiones regulares para transformar búsquedas muy precisas.

Aquí hay una lista de programas en los que puede usar expresiones regulares:

Nota Importante

Este texto sobre expresiones regulares fue escrito por Stefan Trost y no está permitido usar este texto (incluso en partes) en otro contexto sin el permiso de Stefan Trost.