Hace 4 años | Por ccguy a ihateregex.io
Publicado hace 4 años por ccguy a ihateregex.io

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]

Comentarios

D

#c-5" class="content-link" style="color: rgb(227, 86, 20)" data-toggle="popover" data-popover-type="comment" data-popover-url="/tooltip/comment/3245844/order/5">#5
~>cat bin/urls
#!/bin/sh
sed -ne 's/.*(http[^"]*).*/1/p' "$1"

D

#9 😖 😭

D

#11 https://emailregex.com/

En la de Perl vas a flipar.

D

#12 madre del amor hermoso...

DaniTC

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

Shinu

#5 #13 #16 #7 #27 #2 #22 Tal vez os interese esto que acabo de descubrir (siento el retraso ):
https://simple-regex.com

D

#33 es más fácil leerse el manual.
Aprender no da cáncer.

Shinu

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

D

#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, Terraform, "la nube" (aka "AWS", no busques más)... para no quedarse obsoleto en el trabajo, lo único que me faltaba es pasarme más horas al día delante de una consola para aprenderme esa chufa en vez de ir, buscar lo que necesito en un momento dado y a tomar por culo.

Las regex: no me las aprendí en la uni, no me las voy a aprender ahora. Sobre todo teniendo chuletas o páginas web donde ya te dan mascado lo que vas a necesitar.

vorotas

#5 yo solo las he usado para validar direcciones de correo en formularios web. Y como tú, las busco en internet.

jonolulu

#5 ¿Te parece poco sed, grep o validación de formularios?

court

#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 https://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.

DaniTC

#5 Claro, la magia y profesionalidad del split la conocemos todos. wall wall wall wall

D

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

https://swtch.com/~rsc/regexp/regexp1.html

Shinu

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

C

Ya saben el dicho: si vas a resolver un problema con expresiones regulares ya tienes dos problemas.

ccguy

#7 Está en la propia web que he mandado.

anv

A mí me encantan.

anv

#3 Sí. Son un jeroglífico. Pero tremendamente útiles para algunos casos.

Cantro

#6 Las odio, pero en Apache no podríamos vivir sin ellas.

anv

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

angelitoMagno

#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][)]?[s.]?[09][s.]?[09]$

Pues te creas una función que sea is_phone y usas la expresión dentro y ya está, el problema de legibilidad solucionado.

Alvarro53

#22 Eso es obvio pero y si tienes que modificar la expresión?

e

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

ccguy

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

e

#28 tu mismo lo estas diciendo, las expresiones regulares complejas es código que requiere comentarios adicionales/exhaustivos.

D

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.

Vodker

#0 no he entendío ná lol

E

#1 pues ya has entendido más que yo que en un primer momento creí que era un formulario para registrarme. ¡Y una mierda!...

Cehona

Yo por eso no elegí matemáticas, no quería estar rodeado de problemas.

tunic

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

https://regex101.com/