Regex
Las expresiones regulares son una herramienta poderosa para la búsqueda y manipulación de cadenas, permitiendo definir patrones para realizar operaciones complejas de forma concisa y eficiente.
1. Literales
Un literal es una coincidencia exacta de un texto específico. Por ejemplo, si quieres encontrar la palabra "casa" en una cadena, usarías "casa" como tu expresión regular
2. Caracteres Especiales
Algunos caracteres tienen significados especiales en las expresiones regulares. Aquí hay algunos ejemplos :
.
(punto): Coincide con cualquier carácter excepto una nueva línea.Ejemplo:
a.b
puede coincidir con "acb", "a b", pero no con "a\nb".
\d
: Coincide con cualquier dígito numérico (0-9).Ejemplo:
\d\d
coincide con cualquier secuencia de dos dígitos, como "12".
\w
: Coincide con cualquier carácter alfanumérico (letras, dígitos) o guion bajo (_).Ejemplo:
\w\w
puede coincidir con "ab", "1a", o "a_".
\s
: Coincide con cualquier espacio en blanco (espacio, tabulación, nueva línea).Ejemplo:
a\sb
coincide con "a b".
3. Cuantificadores
Permiten especificar cuántas veces quieres que aparezca un elemento:
*
(cero o más veces)Ejemplo:
a*b
puede coincidir con "b", "ab", "aab", "aaab", etc.
+
(una o más veces)Ejemplo:
a+b
coincide con "ab", "aab", "aaab", pero no con "b".
?
(cero o una vez)Ejemplo:
a?b
puede coincidir con "b" o "ab".
{n}
(n veces exactas)Ejemplo:
a{2}b
coincide con "aab".
Por supuesto, vamos a profundizar en cada uno de los conceptos básicos de regex con ejemplos más detallados y cómo aplicarlos en C#.
1. Literales
Un literal es una coincidencia exacta de un texto específico. Por ejemplo, si quieres encontrar la palabra "casa" en una cadena, usarías "casa" como tu expresión regular.
Ejemplo en C#:
2. Caracteres Especiales
Algunos caracteres tienen significados especiales en las expresiones regulares. Aquí hay algunos ejemplos comunes:
.
(punto): Coincide con cualquier carácter excepto una nueva línea.Ejemplo:
a.b
puede coincidir con "acb", "a b", pero no con "a\nb".
\d
: Coincide con cualquier dígito numérico (0-9).Ejemplo:
\d\d
coincide con cualquier secuencia de dos dígitos, como "12".
\w
: Coincide con cualquier carácter alfanumérico (letras, dígitos) o guion bajo (_).Ejemplo:
\w\w
puede coincidir con "ab", "1a", o "a_".
\s
: Coincide con cualquier espacio en blanco (espacio, tabulación, nueva línea).Ejemplo:
a\sb
coincide con "a b".
3. Cuantificadores
Permiten especificar cuántas veces quieres que aparezca un elemento:
*
(cero o más veces)Ejemplo:
a*b
puede coincidir con "b", "ab", "aab", "aaab", etc.
+
(una o más veces)Ejemplo:
a+b
coincide con "ab", "aab", "aaab", pero no con "b".
?
(cero o una vez)Ejemplo:
a?b
puede coincidir con "b" o "ab".
{n}
(n veces exactas)Ejemplo:
a{2}b
coincide con "aab".
4. Clases de Caracteres
Permiten definir un conjunto de caracteres que pueden coincidir.
[abc]
: Coincide con 'a', 'b', o 'c'.Ejemplo:
a[bc]d
puede coincidir con "abd" o "acd".
5. Anclas
Especifica una posición en el texto en lugar de un carácter.
^
(inicio de la cadena):^a
coincide con "a" al principio de la cadena.$
(final de la cadena):a$
coincide con "a" al final de la cadena.
Puedes usar expresiones regulares en C# sin necesariamente trabajar con la clase Match
si tu objetivo es simplemente verificar si hay una coincidencia. En lugar de Match
, puedes usar el método Regex.IsMatch
, que devuelve un valor booleano (true
o false
) indicando si el patrón de expresión regular se encuentra dentro de la cadena dada.
6.Clases de Caracteres Personalizadas
Las clases de caracteres personalizadas te permiten definir un conjunto específico de caracteres que desees que coincidan en tu expresión regular. Las defines usando corchetes []
, y puedes incluir rangos de caracteres.
[a-zA-Z]
: Coincide con cualquier letra mayúscula o minúscula. Aquí,a-z
abarca todas las letras minúsculas yA-Z
todas las mayúsculas.[abc]
: Coincide con 'a', 'b', o 'c'. Es un ejemplo de una clase de caracteres que no usa rangos.
Si quieres que coincida un patrón específico de caracteres de esta clase un número determinado de veces, puedes usar cuantificadores.
[a-zA-Z]{2}
: Coincide con cualquier dos letras seguidas, ya sean mayúsculas o minúsculas.
Aquí tienes un ejemplo en C# utilizando una clase de caracteres personalizada:
Última actualización