Las expresiones regulares son patrones de texto utilizados para buscar y manipular cadenas de caracteres. Son ampliamente utilizadas en programación para tareas como búsqueda, validación y sustitución de texto.
Caracteres
.
Coincide con cualquier caracter, excepto nueva línea.
a.c #coincidirá con "abc", "a+c", "a!c", etc.
\w
Coincide con cualquier carácter de palabra (letra, número, guión bajo).
\w+ #coincidirá con "word123", "hello_world", "123", etc.
\W
Coincide con cualquier carácter que no sea de palabra.
\W+ #coincidirá con "_!@#", "-$%", etc.
\d
Coincide con cualquier dígito.
\d{3} #coincidirá con "123", "456", etc.
\D
Coincide con cualquier caracter que no sea dígito.
\D+ #coincidirá con "abc", "_!@", etc.
Espacios y saltos
\n
Coincide con una nueva línea.
\t
Coincide con un tabulador.
\s
Coincide con cualquier espacio en blanco.
\s+ #coincidirá con " ", " ", "\t\t", etc.
\S
Coincide con cualquier caracter que no sea espacio en blanco.
\S+ #coincidirá con "word", "123", "_!@", etc.
Cuantificadores
\*
Coincide con 0 o más ocurrencias del patrón anterior.
a* #coincidirá con "", "a", "aa", "aaa", etc.
+
Coincide con 1 o más ocurrencias del patrón anterior.
b+ #coincidirá con "b", "bb", "bbb", etc.
?
Coincide con 0 o 1 ocurrencia del patrón anterior.
c? #coincidirá con "", "c", etc.
{n}
Coincide exactamente con n ocurrencias del patrón anterior.
d{3} #coincidirá con "ddd".
{n,}
Coincide con al menos n ocurrencias del patrón anterior.
e{2,} #coincidirá con "ee", "eee", "eeee", etc.
{n,m}
Coincide con entre n y m ocurrencias del patrón anterior.
f{1,3} #coincidirá con "f", "ff", "fff", etc.
Clases de caracteres
[]
Define una clase de caracteres.
[abc]
Coincide con cualquier caracter entre los corchetes.
[abc]+ #coincidirá con "a", "abc", "caba", etc.
[^]
Define una clase de caracteres negativa.
[^abc]
Coincide con cualquier caracter que no esté entre los corchetes.
[^abc]+ #coincidirá con "123", "_!@", etc.
[-]
Define un rango de caracteres.
[a-z]
Coincide con cualquier caracter en el rango de a a z.
[a-z]+ #coincidirá con "hello", "example", etc.
[A-Z]
Coincide con cualquier caracter en el rango de A a Z.
[A-Z]+ #coincidirá con "UPPER", "CASE", etc.
[0-9]
Coincide con cualquier dígito.
[0-9]+ #coincidirá con "123", "4567", etc.
[,]
Define varias clases de caracteres.
[a-z,A-Z]
Coincide con cualquier caracter en el rango de a a z o A-Z.
[a-z,A-Z]+ #coincidirá con "Upper", "CASE", "lower" etc.
Agrupación y composición
|
Alternancia, coincide con uno de varios patrones.
g|h #coincidirá con "g" o "h".
()
Agrupación de patrones.
(hi)+ #coincidirá con "hi", "hihi", "hihihi", etc.
\
Carácter de escape para caracteres especiales.
(hi)+ #coincidirá con "hi", "hihi", "hihihi", etc.
Anchors y limites
^
Coincide con el inicio de la línea.
^start #coincidirá con "start of line", "start_here", etc.
$
Coincide con el final de la línea.
end$ #coincidirá con "end of line", "goes to end", etc.
\b
Coincide con el límite de una palabra.
\bword\b #coincidirá con "word", "wording", "my_word", pero no
"sword".
\B
Coincide con el límite de una no-palabra.
\Bnon\B #coincidirá con "non-stop", "intrinsic", pero no "nonprofit".
Modificadores inline
(?i)
Modificador de case-insensitive.
(?i)hello #coincidirá con "hello", "HELLO", "hElLo", etc.
(?m)
Modificador de multiline.
(?m)^start #coincidirá con "start of line", "start here", etc.
(?s)
Modificador de dotall.
(?s)start.*end #coincidirá con "start\nmiddle\nend".
(?x)
Modificador de verbose.
(?x) a b c # coincidirá con "a b c", ignorando los espacios.
Lookarounds
(?=patrón)
Positive lookahead, coincide si el siguiente texto coincide con patrón
.
(?!patrón)
Negative lookahead, coincide si el siguiente texto NO coincide con patrón
.
(?<=patrón)
Positive lookbehind, coincide si el texto anterior coincide con patrón
.
(?<!patrón)
Negative lookbehind, coincide si el texto anterior NO coincide con patrón
.
Banderas
Las banderas (flags) se utilizan junto con expresiones regulares para modificar su comportamiento durante la búsqueda de coincidencias en una cadena de texto.
En C#, las banderas se pueden especificar como argumentos adicionales al compilar la expresión regular con Regex.Compile(). Por ejemplo:
Regex.Compile("patrón", RegexOptions.IgnoreCase) para la bandera IgnoreCase
Regex.Compile("patrón", RegexOptions.Multiline) para la bandera Multiline
Regex.Compile("patrón", RegexOptions.Singleline) para la bandera Singleline
Regex.Compile("patrón", RegexOptions.IgnorePatternWhitespace) para la bandera IgnorePatternWhitespace
/patrón/i para la bandera i (insensitive)
/patrón/g para la bandera g (global)
/patrón/m para la bandera m (multiline)
/patrón/s para la bandera s (dotall)
/patrón/u para la bandera u (unicode)
En Python, las banderas se pueden especificar como argumentos adicionales al compilar la expresión regular con re.compile(). Por ejemplo:
re.compile(r'patrón', re.I) para la bandera I (insensitive)
re.compile(r'patrón', re.M) para la bandera M (multiline)
re.compile(r'patrón', re.S) para la bandera S (dotall)
re.compile(r'patrón', re.U) para la bandera U (unicode)
Ejemplos de uso en distintos lenguajes
En estos ejemplos, la expresión regular utilizada es \broja\b
, que busca la palabra “roja” como una palabra completa. Los ejemplos buscan esta palabra en el texto “La casa es roja y azul.” y muestran las coincidencias encontradas.
using System;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
string texto = "La casa es roja y azul.";
// Patrón para buscar la palabra "roja"
string patron = @"\broja\b";
// Crear el objeto Regex
Regex regex = new Regex(patron);
// Buscar coincidencias
MatchCollection coincidencias = regex.Matches(texto);
// Imprimir las coincidencias
foreach (Match coincidencia in coincidencias)
{
Console.WriteLine($"Encontrado: {coincidencia.Value}");
}
}
}
let texto = "La casa es roja y azul.";
// Patrón para buscar la palabra "roja"
let patron = /\broja\b/g;
// Buscar coincidencias
let coincidencias = texto.match(patron);
// Imprimir las coincidencias
coincidencias.forEach(coincidencia => {
console.log(`Encontrado: ${coincidencia}`);
});
import re
texto = "La casa es roja y azul."
# Patrón para buscar la palabra "roja"
patron = r'\broja\b'
# Buscar coincidencias
coincidencias = re.findall(patron, texto)
# Imprimir las coincidencias
for coincidencia in coincidencias:
print(f"Encontrado: {coincidencia}")
Pruébalo online
https://www.demo.com
email@domain.com
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum