🧲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
using System.Text.RegularExpressions;
string texto = "La casa es grande.";
Match match = Regex.Match(texto, "casa");
if (match.Success) {
Console.WriteLine($"Se encontró: {match.Value}");
}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.bpuede coincidir con "acb", "a b", pero no con "a\nb".
Match match = Regex.Match("acb", "a.b");
// Coincide con "acb"\d: Coincide con cualquier dígito numérico (0-9).Ejemplo:
\d\dcoincide 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\wpuede coincidir con "ab", "1a", o "a_".
\s: Coincide con cualquier espacio en blanco (espacio, tabulación, nueva línea).Ejemplo:
a\sbcoincide con "a b".
3. Cuantificadores
Permiten especificar cuántas veces quieres que aparezca un elemento:
*(cero o más veces)Ejemplo:
a*bpuede coincidir con "b", "ab", "aab", "aaab", etc.
+(una o más veces)Ejemplo:
a+bcoincide con "ab", "aab", "aaab", pero no con "b".
?(cero o una vez)Ejemplo:
a?bpuede coincidir con "b" o "ab".
{n}(n veces exactas)Ejemplo:
a{2}bcoincide 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.bpuede coincidir con "acb", "a b", pero no con "a\nb".
\d: Coincide con cualquier dígito numérico (0-9).Ejemplo:
\d\dcoincide 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\wpuede coincidir con "ab", "1a", o "a_".
\s: Coincide con cualquier espacio en blanco (espacio, tabulación, nueva línea).Ejemplo:
a\sbcoincide con "a b".
3. Cuantificadores
Permiten especificar cuántas veces quieres que aparezca un elemento:
*(cero o más veces)Ejemplo:
a*bpuede coincidir con "b", "ab", "aab", "aaab", etc.
+(una o más veces)Ejemplo:
a+bcoincide con "ab", "aab", "aaab", pero no con "b".
?(cero o una vez)Ejemplo:
a?bpuede coincidir con "b" o "ab".
{n}(n veces exactas)Ejemplo:
a{2}bcoincide 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]dpuede coincidir con "abd" o "acd".
5. Anclas
Especifica una posición en el texto en lugar de un carácter.
^(inicio de la cadena):^acoincide 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-zabarca todas las letras minúsculas yA-Ztodas 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