regex-en-diferentes-lenguajes

Ejemplos de expresiones regulares en distintos lenguajes de programación

Ahora que hemos visto la sintaxis básica (que más o menos) es una sintaxis común que podemos aplicar en distintos lenguajes de programación y herramientas.

Sin embargo, aunque la sintaxis básica de las expresiones regulares suele ser similar, cada lenguaje puede tener variaciones en su implementación y en las funciones disponibles.

Así que vamos a dedicar un artículo a ver cómo se podrían ejecutar algunas regular expression en Python, JavaScript y C#.

Expresiones regulares en Python

Python ofrece el módulo re, que proporciona una amplia gama de funcionalidades para trabajar con expresiones regulares. A continuación, se presentan algunos ejemplos prácticos.

Coincidencias básicas

import re

text = "El gato está en el tejado."
pattern = r'gato'

# Buscar coincidencias
matches = re.findall(pattern, text)
print(matches)  # ['gato']

Sustitución

text = "El cielo es azul."
pattern = r'azul'
replacement = 'rojo'

# Sustituir coincidencias
new_text = re.sub(pattern, replacement, text)
print(new_text)  # 'El cielo es rojo.'

Uso de banderas

text = "Hola, Hola, hOLA"
pattern = r'hola'

# Buscar sin importar mayúsculas
matches = re.findall(pattern, text, re.IGNORECASE)
print(matches)  # ['Hola', 'Hola', 'hOLA']

Expresiones regulares en JavaScript

JavaScript tiene soporte nativo para expresiones regulares a través de la clase RegExp. A continuación, se muestran ejemplos de su uso.

Coincidencias básicas

let text = "El gato está en el tejado.";
let pattern = /gato/;

let matches = text.match(pattern);
console.log(matches);  // ['gato']

Sustitución

let text = "El cielo es azul.";
let pattern = /azul/;
let replacement = 'rojo';

let newText = text.replace(pattern, replacement);
console.log(newText);  // 'El cielo es rojo.'

Uso de banderas

let text = "Hola, Hola, hOLA";
let pattern = /hola/gi;  // 'g' para global, 'i' para insensible a mayúsculas

let matches = text.match(pattern);
console.log(matches);  // ['Hola', 'Hola', 'hOLA']

Expresiones regulares en Java

Java proporciona el paquete java.util.regex para trabajar con expresiones regulares. A continuación, se presentan ejemplos.

Coincidencias básicas

import java.util.regex.*;

public class RegexExample {
    public static void main(String[] args) {
        String text = "El gato está en el tejado.";
        String pattern = "gato";

        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(text);

        while (m.find()) {
            System.out.println(m.group());  // 'gato'
        }
    }
}

Sustitución

import java.util.regex.*;

public class RegexExample {
    public static void main(String[] args) {
        String text = "El cielo es azul.";
        String pattern = "azul";
        String replacement = "rojo";

        String newText = text.replaceAll(pattern, replacement);
        System.out.println(newText);  // 'El cielo es rojo.'
    }
}

Uso de banderas

import java.util.regex.*;

public class RegexExample {
    public static void main(String[] args) {
        String text = "Hola, Hola, hOLA";
        String pattern = "(?i)hola";  // 'i' para insensible a mayúsculas

        Pattern p = Pattern.compile(pattern);
        Matcher m = p.matcher(text);

        while (m.find()) {
            System.out.println(m.group());  // 'Hola', 'Hola', 'hOLA'
        }
    }
}

Expresiones regulares en C#

En C#, las expresiones regulares se manejan a través de la clase Regex del espacio de nombres System.Text.RegularExpressions. Aquí hay ejemplos de uso.

Coincidencias básicas

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string text = "El gato está en el tejado.";
        string pattern = "gato";

        Match match = Regex.Match(text, pattern);
        if (match.Success)
        {
            Console.WriteLine(match.Value);  // 'gato'
        }
    }
}

Sustitución

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string text = "El cielo es azul.";
        string pattern = "azul";
        string replacement = "rojo";

        string newText = Regex.Replace(text, pattern, replacement);
        Console.WriteLine(newText);  // 'El cielo es rojo.'
    }
}

Uso de banderas

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string text = "Hola, Hola, hOLA";
        string pattern = "hola";

        MatchCollection matches = Regex.Matches(text, pattern, RegexOptions.IgnoreCase);
        foreach (Match match in matches)
        {
            Console.WriteLine(match.Value);  // 'Hola', 'Hola', 'hOLA'
        }
    }
}