2 puntos por GN⁺ 2023-09-12 | 1 comentarios | Compartir por WhatsApp
  • Este artículo analiza cómo calcular la diferencia y la intersección de dos expresiones regulares (regexes).
  • El autor muestra el proceso proporcionando ecuaciones y resultados como α < β = false, α = β = true, α > β = false, α & β = α ^ β = ∅, α - β = ∅.
  • Además, este artículo incluye una breve introducción a la siguiente gramática de expresiones regulares:
    • . coincide con cualquier carácter individual
    • xy es concatenación: coincide con x y luego con y
    • x|y es alternancia: coincide con x o y
    • x* es estrella de Kleene: coincide con x cero o más veces
    • (xyz) es agrupación: trata xyz como un solo elemento
    • () es una expresión regular vacía que coincide con la cadena vacía
    • x+ es plus de Kleene: coincide con x una o más veces
    • x? es opcional: coincide opcionalmente con x
    • x{n} es potencia: concatena x consigo mismo n veces
    • x{m,n} es repetición: concatena x consigo mismo de m a n veces
    • [a-z0-9] es agrupación: coincide con cualquier carácter individual dentro del grupo
    • [^a-z0-9] es agrupación negada: coincide con cualquier carácter individual que no esté dentro del grupo
    • \c es escape: coincide con el carácter especial c
    • \u001a es escape Unicode: coincide con el carácter UTF-16 correspondiente
    • a, b, c son todos los demás caracteres que coinciden consigo mismos.
  • El artículo también menciona características no soportadas, como anchors, aserciones de ancho cero, backreferences, extracción de subgrupos, búsqueda o coincidencia parcial, y otras banderas que cambian el comportamiento.
  • Para más información, el autor menciona consultar la página de GitHub de antimirov.
  • El autor de este artículo es Eiríkr Åsheim, conocido como @d6 en Twitter y Mastodon.

1 comentarios

 
GN⁺ 2023-09-12
Comentario de Hacker News
  • Este artículo analiza una herramienta para calcular la diferencia y la intersección entre dos expresiones regulares (regexes).
  • Los usuarios reportaron que la herramienta puede quedarse colgada al intentar procesar regexes complejas, como las que filtran números divisibles entre 3.
  • La herramienta puede usarse para generar una jerarquía de clases de cadenas útil para validar ciertos tipos de texto, como direcciones de correo electrónico o URL.
  • Un usuario creó una demo web similar que muestra el proceso de parsear regex en varias formas y finalmente generar código en distintos lenguajes.
  • Se reconoció a las expresiones regulares por su capacidad de empaquetar teoría matemática compleja en una interfaz práctica similar al álgebra lineal.
  • Algunos usuarios se sorprendieron por la complejidad de las regex de unión e intersección que genera la herramienta, y sugirieron que producir una expresión regular mínima podría ser un reto aún mayor.
  • La herramienta ofrece una representación gráfica del Deterministic Finite Automaton (DFA) para las regex dadas, y los usuarios la consideraron impresionante.
  • Algunos usuarios descubrieron que la herramienta tenía dificultades para procesar regex de URL y direcciones de correo electrónico sintácticamente válidas.
  • Se sugirió desactivar las autocompletaciones en el campo de entrada de regex para mejorar la usabilidad en dispositivos móviles.
  • Un usuario compartió su experiencia usando el concepto de intersección de regex para escribir la lógica de validación de una configuración de "filtro IP RegEx", lo que ayudó a evitar que los usuarios se quejaran de que el filtro no funcionaba.