EDICIóN GENERAL
47 meneos
616 clics
Este envío tiene varios votos negativos. Asegúrate antes de menear

I Hate Regex: ideas, «chuletas» y explicaciones para crear expresiones regulares «comprendiéndolas»

I Hate Regex es una web con fórmulas para las expresiones regulares más habituales, donde además se pueden encontrar algunas ideas y consejos e incluso «chuletas» con la listas de operadores y símbolos de estas curiosas bestias de la búsqueda de patrones. Su creador cree que es mejor comprender cómo funcionan que aprendérselas de memoria, y razón no le falta. [vía microsiervos]

| etiquetas: expresiones regulares , chuletas
Complicadísimas, lentas de cojones y encima diferentes según el lenguaje que las interprete.

De todas las expresiones regulares que he tenido la desgracia de mantener en mi vida, me atrevo a decir que el rotundo 100% de todas ellas eran innecesarias y habían otras formas de resolver la situación con la librería estándar del lenguaje, mucho más rápido al ejecutarse e infinitamente más sencillo para los programadores que vengan detrás.

Usos que le doy yo a esa mierda: definición de URLs cuando…   » ver todo el comentario
#5
~>cat bin/urls
#!/bin/sh
sed -ne 's/.*(http[^"]*).*/1/p' "$1"
#11 emailregex.com/

En la de Perl vas a flipar.
#12 madre del amor hermoso... :palm:
#12 Creo que es lo más difícil en Regex: filtrar un correo electrónico correctamente. Entendiendo "correctamente" al hecho de no permitir nunca un correo electrónico real, que es lo más difícil.
#5 habían otras formas de resolver la situación con la librería estándar del lenguaje, mucho más rápido al ejecutarse e infinitamente más sencillo para los programadores que vengan detrás.
Si, para esos casos no son las expresiones regulares. Pero para otros casos son muy útiles, más sencillas y más fáciles de entender.

No hay ningún otro sitio donde se necesiten y si lo hay no quiero saberlo
La ignorancia es libre....
#5 #13 #16 #7 #27 #2 #22 Tal vez os interese esto que acabo de descubrir (siento el retraso :shit: ):
simple-regex.com
#33 es más fácil leerse el manual.
Aprender no da cáncer.
#34 Si yo también sé, mi único problema con las expresiones regulares es su mantenimiento, es un poco farragoso enter el funcionamiento de algo que hiciste hace tiempo. Con algo así sería más fácil el mantenimiento, aunque supongo que al final me quedaría con las expresiones regulares de todas formas...
#34 Aprender no da cáncer, pero consume tiempo. Una cosa, el tiempo, que es incluso más importante que el dinero, sobre todo a ciertas edades donde ya no te sobran horas al día para pasarlas delante de una consola probando frikadas como cuando tenías 20 años en la universidad.

El manual de las regex que se lo lea quien no tenga nada mejor que hacer. Yo para las expresiones regulares seguiré buscando en SO porque después de mantenerse uno al día con Java, Python, C++, Docker, Kubernetes,…   » ver todo el comentario
#5 yo solo las he usado para validar direcciones de correo en formularios web. Y como tú, las busco en internet.
#5 ¿Te parece poco sed, grep o validación de formularios? :shit:
#5 Qué conste que un compilador sin expresiones regulares lo vas a tener complicado para hacer...
#16 Los compiladores no analizan el texto con expresiones regulares, tokenizan la fuente caracter por caracter y luego procesan los tokens segun las reglas de la sintaxis que imponga la gramatica ( por ejemplo usando un RDP en.wikipedia.org/wiki/Recursive_descent_parser ). Una expresion regular simplemente representa un automata y produce una salida, es de hecho, un compilador simple; pero de ningun modo se usan para compilar por compiladores de proposito general.
#5 Claro, la magia y profesionalidad del split la conocemos todos. :wall: :wall: :wall: :wall:
#5
Los procesadores de expresiones regulares en python/perl/php/ruby han intercambiado la velocidad de grep/awk por la habilidad de realizar búsquedas más complejas.

Es decir, en esos lenguajes pseudo interpretados, las expresiones regulares son lentas por mucho que las compiles u optimices.

AWK, C o C++ son lenguajes con expresiones regulares mucho más rápidas. No usan backtracking.
Así pues, has de saber también qué motor usar y ponerle límites a la expresión regular para que no se eternice si la implementación que usas emplea backtracking.

swtch.com/~rsc/regexp/regexp1.html
#5 Yo las he usado para obtener una información específica de unos logs generados diariamente. Dudo que eso se pudiese hacer hecho de una forma más sencilla usando la librería estándar del lenguaje.
Ya saben el dicho: si vas a resolver un problema con expresiones regulares ya tienes dos problemas.
#7 Está en la propia web que he mandado.
A mí me encantan.
#2 Están bien si te gusta hacerte pajas mentales.

El problema de las expresiones regulares, aun controlando más o menos, es que sólo las entiendes cuando las haces, pero cuando las encuentras en código meses después tienes que pasar un rato analizandolas para ver qué coño hacen.
#3 Sí. Son un jeroglífico. Pero tremendamente útiles para algunos casos.
#6 Las odio, pero en Apache no podríamos vivir sin ellas.
#20 Yo las uso muy seguido. Por ejemplo, con una sola instrucción puedo decir "encuéntrame números de teléfono dentro de este texto", y listo.
#3 Bueno, para evitar el problema de ¿y esto que carajo hacía? están las funciones.

Por ejemplo, según esta web la expresión para ver si algo es un teléfono es:
^[+]?[(]?[0-9]{3}[)]?[s.]?[09]{3}[s.]?[09]{4,6}$

Pues te creas una función que sea is_phone y usas la expresión dentro y ya está, el problema de legibilidad solucionado.
#22 Eso es obvio pero y si tienes que modificar la expresión?
#3 Las expresiones regulares puedes comentarlas y hacerlas por bloques de tal manera que puedas indicar que hace cada parte, si no las entiendes es porque quien la escribió no se molesto en documentarlo.
#26 eso se puede aplicar a todo. Hay código que se entiende sin más y código que requiere comentarios exhaustivos.

Tú sabrás que prefieres tener.
#28 tu mismo lo estas diciendo, las expresiones regulares complejas es código que requiere comentarios adicionales/exhaustivos.
Son diez o doce reglas que permiten hacer de todo. Además con una sintaxis compacta y clara.
Sencillo y eficiente. Uno de los mejores inventos jamás hechos.
#0 no he entendío ná xD
#1 pues ya has entendido más que yo que en un primer momento creí que era un formulario para registrarme. ¡Y una mierda!...
Yo por eso no elegí matemáticas, no quería estar rodeado de problemas.
A complementar con esta otra web para hacer tus pinitos en regexps o como arma secreta en esas duras epopeyas en busca de la regexp exacta :-D

regex101.com/
comentarios cerrados

menéame