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]
#5:
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 estoy en algún proyecto web con frameworks y para buscar con sed, grep o en Vim. No hay ningún otro sitio donde se necesiten y si lo hay no quiero saberlo. Por supuesto no me preguntes nada sobre ellas, ya que siempre voy a internet a ver cómo se hacen, nunca me he molestado en aprenderlas.
#13:
#5habí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....
#16:
#5 Qué conste que un compilador sin expresiones regulares lo vas a tener complicado para hacer...
#3:
#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.
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 estoy en algún proyecto web con frameworks y para buscar con sed, grep o en Vim. No hay ningún otro sitio donde se necesiten y si lo hay no quiero saberlo. Por supuesto no me preguntes nada sobre ellas, ya que siempre voy a internet a ver cómo se hacen, nunca me he molestado en aprenderlas.
#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.
#5habí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....
#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, 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.
#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.
#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.
#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.
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 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.
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.
Comentarios
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 estoy en algún proyecto web con frameworks y para buscar con sed, grep o en Vim. No hay ningún otro sitio donde se necesiten y si lo hay no quiero saberlo. Por supuesto no me preguntes nada sobre ellas, ya que siempre voy a internet a ver cómo se hacen, nunca me he molestado en aprenderlas.
Por cierto gran enlace. Gracias #0
#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"
#9 😖 😭
#11
En la de Perl vas a flipar.
#12 madre del amor hermoso...
#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 ):
#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, 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.
#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?
#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 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.
#5 Claro, la magia y profesionalidad del split la conocemos todos.
#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
#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][)]?[
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.
#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á
#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.
https://m.regexcrossword.com/puzzles/
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/