👽
3ntr0 Apuntes
  • 📚Principios SOLID y Clean Code
    • 💲Deuda Técnica
    • 📌Mejorar Nombres
      • 📄Nombre según Tipo
      • 🚗Nombre Clases
      • ⚙️Nombres Funciones
    • ☑️Mejorar Funciones
    • ➿Principio DRY
    • 🧼Clean Code en Clases (POO)
      • 📘 Principio de Responsabilidad Única (SRP)
    • 🤮🇸 🇹 🇺 🇵 🇮 🇩 - Code Smells
      • 🚫Singleton
      • 🙏Tight Coupling
      • 🥸U P I D
      • 🚩Más Code Smells
  • 💕Angular
    • 🏍️Standalone
    • 🆚ngClass vs [class.clase]
    • 🩻Directivas
    • 🚩ElementRef
    • 🎀Decoradores
      • @HostListener
    • 🔄OnChanges
    • 🧪Testing - Jasmine y Karma
      • 🚀Módulo 1: Introducción a las pruebas unitarias
      • 🧫Módulo 2: Introducción a Jasmine
      • ⚒️Módulo 3: Introducción a Karma
      • 🔬Módulo 4: Pruebas unitarias en Angular
        • Código comentado Paso a Paso
      • 🕵️‍♂️Módulo 5: Técnicas avanzadas en Jasmine
      • 📚Módulo 6: Técnicas avanzadas en Karma
  • 🖼️HTML y CSS
    • 🖌️Custom Properties
    • Trucos
    • Brakepoints
  • 🧋Javascript
    • 🛠️Funciones
    • 📦Arrays
      • Every y Some
      • Map
      • Reduce
    • 😎Hoisting
    • 🪚Desestructuración
    • 🛻Programación Asincrona
      • 📞Callbacks
      • 🌟Promises
      • 🆚Promise.all Y Promise.any
      • 🚀Async/Await
    • Respuestas HTTP
    • 🧐Dudas Básicas
      • NodeList
      • 🧐Contextos de .this
      • 💭Parametro Rest
      • 🗨️arguments
      • 🙀JavaScript no tiene clases
      • 🆚Null vs Undefined
      • 🔎Operador in
      • 🟨Operador Spread
      • ❓Encadenamiento Opcional
      • 🔲Notación de Corchetes
      • ⛓️Coalescencia Nula (??)
      • 🆚Shallow Copy vs Deep Copy
      • 🆚.json VS JSON.parse
      • ⚙️Fetch wrapper
      • Sets
      • Maps
  • 📒Terminología
    • 💎Esenciales
    • Web
    • Javascript
  • 🌐GIT
    • Source Tree
  • 🧬React
    • 🫂Babel
  • 🔧 Fundamentos de C#
    • 🎛️General
      • 🧐Diferencia Equals y ==
      • 🧐Diferencia entre typeof y .GetType()
      • 📐Convenciones de Nomenclatura
    • 💠Summary
    • 📇.resx
    • 📄Strings
      • ⛓️Comparación de cadenas
    • 🧲Regex
    • 📦POO
      • 🚙Clases
        • ✏️Clase String
        • 📥Métodos de Acceso
        • ⚗️Métodos de Extensión
    • 🖇️Pattern Matching
    • 🚩Excepciones
    • Programación Asíncrona
    • 🔎LINQ
      • 🅿️PLINQ
  • 🌐 Desarrollo Web con ASP.NET
    • 🧬Modelos
      • 🗒️Data Annotations
        • 📑Lista
        • 🧪Atributos
          • 🛠️Atributos Personalizados
          • 🧰AttributeUsage
          • 📥Acceso a los atributos
        • 📚Documentación
    • 👷Servicios
      • ⭐Servicios Singleton
    • ⏳Sesiones
      • 🧭Temp Data
    • DbContext
      • 🔄Eager Loading
    • 🥽Manejo de Datos
      • 🗃️Archivos
        • 📤Subida de Archivos
        • ✏️Leer y Escribir
        • 🕓Manejo de Archivos Temporales
        • 🛡️Validación de Archivos en ASP.NET Core
      • Colecciones
        • 🪜Pila (Stack)
        • 🏇Cola (Queue)
      • 🩻Manejo de XMLs
        • 📂XmlDocument
          • 🎯XPath
        • 🧿XmlReader
    • ❤️Tips y Utilities
      • 🟰StringComparison
    • 🧰Debug Tools
      • 🧭Stopwatch
  • 🚀Razor
    • 🧱Configuración de Proyecto
    • 📃Pages
      • 🔸Método OnGet
      • 🔸Carpeta Models
      • 🔸Partial Pages
    • 🎨Layouts
      • Aplicar CSS A UNA PAGE
    • 🚴‍♂️Routing
    • 🏢_ViewImports
    • ✒️Sintaxis Razor
      • 😀Introducción
      • 📔Expresiones Implícitas
      • 📕Expresiones Explícitas
      • ✍️Renderizar Texto
      • 🧑‍🔬Class Page Model
      • 🔖Tag Helpers
        • 🔹asp-page
        • 🔹asp-append-version
        • 🔹asp-for
        • 🔹asp-items
        • 🔹asp-action y asp-controller
  • 🔮LUA
    • 🎯Fundamentos
    • ⌨️Entrada por Consola
    • 🔗Estructuras de Control
    • ⚒️Funciones
    • 📦Tablas
    • 📚Funciones y Librerías Estándar
    • 🦖POO
Con tecnología de GitBook
En esta página
  1. 🔧 Fundamentos de C#

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.b puede 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\d coincide con cualquier secuencia de dos dígitos, como "12".

Match match = Regex.Match("La habitación 12 está abierta", @"\d\d");
// Coincide con "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_".

Match match = Regex.Match("ab1", @"\w\w");
// Coincide con "ab"
  • \s: Coincide con cualquier espacio en blanco (espacio, tabulación, nueva línea).

    Ejemplo: a\sb coincide con "a b".

Match match = Regex.Match("a b", @"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.

Match match = Regex.Match("aaab", "a*b");
// Coincide con "aaab"
  • + (una o más veces)

    Ejemplo: a+b coincide con "ab", "aab", "aaab", pero no con "b".

Match match = Regex.Match("aaab", "a+b");
// Coincide con "aaab"
  • ? (cero o una vez)

    Ejemplo: a?b puede coincidir con "b" o "ab".

Match match = Regex.Match("ab", "a?b");
// Coincide con "ab"
  • {n} (n veces exactas)

    Ejemplo: a{2}b coincide con "aab".

Match match = Regex.Match("aab", "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#:

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 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".

Match match = Regex.Match("acb", "a.b");
// Coincide con "acb"
  • \d: Coincide con cualquier dígito numérico (0-9).

    Ejemplo: \d\d coincide con cualquier secuencia de dos dígitos, como "12".

Match match = Regex.Match("La habitación 12 está abierta", @"\d\d");
// Coincide con "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_".

Match match = Regex.Match("ab1", @"\w\w");
// Coincide con "ab"
  • \s: Coincide con cualquier espacio en blanco (espacio, tabulación, nueva línea).

    Ejemplo: a\sb coincide con "a b".

Match match = Regex.Match("a b", @"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.

Match match = Regex.Match("aaab", "a*b");
// Coincide con "aaab"
  • + (una o más veces)

    Ejemplo: a+b coincide con "ab", "aab", "aaab", pero no con "b".

Match match = Regex.Match("aaab", "a+b");
// Coincide con "aaab"
  • ? (cero o una vez)

    Ejemplo: a?b puede coincidir con "b" o "ab".

Match match = Regex.Match("ab", "a?b");
// Coincide con "ab"
  • {n} (n veces exactas)

    Ejemplo: a{2}b coincide con "aab".

Match match = Regex.Match("aab", "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".

Match match = Regex.Match("acd", "a[bc]d");
// Coincide con "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.

Match matchInicio = Regex.Match("abc", "^a");
// Coincide con "a" al inicio
Match matchFinal = Regex.Match("cba", "a$");
// Coincide con "a" al final

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 y A-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:

using System.Text.RegularExpressions;

string texto = "ab1";
bool contieneDosLetras = Regex.IsMatch(texto, @"[a-zA-Z]{2}");

if (contieneDosLetras) {
    Console.WriteLine("La cadena contiene dos letras consecutivas.");
} else {
    Console.WriteLine("La cadena no contiene dos letras consecutivas.");
}
AnteriorComparación de cadenasSiguientePOO

Última actualización hace 1 año

🧲