2

Tu RegEx no funciona: el INFIERNO de los estándares.

A todos nos ha pasado algo parecido con este curso. Aprendemos cosas que parecen ser (y son) súper útiles y, tan ilusionados estamos por aplicarlas que abrimos automáticamente un programa que implemente expresiones regulares, metemos nuestra expresión y… no funciona.

¿Por qué es esta una experiencia tan común? Pues hay una sencilla respuesta: estandarización.

La estandarización en otros casos

Si llevas un tiempo usando tu computadora, te habrás dado cuenta de una cosa: muchos programas pueden leer los mismos archivos. Por ejemplo, una imagen de formato PNG puede ser leída por Discord, pero también por el visor de imágenes de Windows.

Lo mismo ocurre con cosas como el código. Da igual si usas clang o gcc, ambos podrán leer y compilar código escrito en C.

Esto es posible gracias a los estándares. Un estándar es un documento que recoge todas las normas que se deben seguir para implementar algo. Entonces en el estándar (o mejor dicho estándares) de C se recoge que una declaración de variable tiene la forma especificador-de-declaración lista-de-declaradores-de-inicialización;.

¿Suena a chino? Normal, los estándares suelen ser complicados. Pero la idea es que en ese documento todo queda bien definido y sin ambigüedades, por lo que solo una implementación es posible (en general). Y aquí llegamos al problema de RegEx.

¿Tiene RegEx estándar?

Sí.

¿Entonces cuál es el problema? Que nadie le hace caso.

Existe un estándar de RegEx en POSIX, que para no extendernos, es un conjunto de estándares relacionados a la computación. El problema de éste es que es muy limitado.

Es por esto que muchos programas no implementan el estándar sino que lo extienden, por lo que tenemos PROBLEMAS DE COMPATIBILIDAD 🥳💃🕺😼🎉.

Cada quien usa RegEx como le da la gana

Casi nadie usa POSIX, pero una de las implementaciones que es casi estándar es PCRE (Perl Compatible Regular Expressions).

Esta implementación es usada por montones de programas, entre ellos:

  • Nmap
  • Safari (de Apple)
  • KDE
  • Apache
  • Vim (aunque éste lo modificó un poco en sintáxis)
  • Y muchos más

¿Es imposible aprender RegEx entonces?

No.

Aunque no haya un estándar concreto, muchas cosas fundamentales son comunes a todos. Por ejemplo, Hol[aeiou] coincidirá con “Hol” seguido de una vocal en todas las implementaciones que se precien. Por ejemplo, en el editor que uso ahora mismo (Neovim):

a.png

Así es que tomar este curso vale la pena, siempre que tengas en mente COMPROBAR QUÉ NORMAS DE REGEX SIGUE CADA PROGRAMA.

Escribe tu comentario
+ 2
1
18649Puntos

di enter sin querer, ahora llega el post XD