Noticias Programación

RegexLearn y otros recursos de RegEx

RegexLearn es un patio de juegos intuitivo impulsado por instrucciones en línea donde aprenderá a construir expresiones regulares. También revisamos otras herramientas, construcciones de expresiones regulares avanzadas, la portabilidad del lenguaje de programación de expresiones regulares y cómo disuadir los ataques de denegación de servicio con expresiones regulares.

No profundizaré en los detalles de por qué necesita conocer las expresiones regulares como desarrollador. bastará decir que:

Regex se puede utilizar en lenguajes de programación como Phyton, SQL, Javascript, R, Google Analytics, Google Data Studio y durante el proceso de codificación para buscar, comparar y editar texto.

A pesar de esta era multimedia, el texto sigue siendo el rey; desde datos en humildes hojas de cálculo de Excel hasta ETL, NLP e inteligencia empresarial, todo es texto.

El otro punto es que las expresiones regulares son muy difíciles de dominar. Por supuesto, las cosas han mejorado desde que leíste sobre ellos en libros como el atemporal Mastering Regular Expressions de Jeffrey Friedl o el nuevo Learning Regular Expressions de Ben Forta y el proceso de aprender sobre ellos se ha vuelto más fácil gracias al advenimiento de herramientas como RegexLearn. Por supuesto, el nivel de dificultad o el grupo objetivo al que se dirigen varía entre las herramientas en sí.

Por lo tanto, hay herramientas como The Perl Regex Tester, Regexr, Regex101, que se adaptan a una audiencia de nivel más avanzado y hay otras que son más amigables como Regexplained, Ihateregex o Regex Coach Desktop, pero todas permiten al usuario probar expresiones regulares contra un fragmento de texto para despejarlos y aprender probándolos. Ninguno de estos proporciona el enfoque de enseñanza paso a paso adoptado por RegexLearn.

Aparte de las herramientas, también ha habido otros intentos de doblar la complejidad de las expresiones adoptando soluciones científicas como la Programación Genética que eché un vistazo con «Generación Automática de Expresiones Regulares con Programación Genética», o con un nuevo lenguaje, Simple Regex. Lenguaje, discutido en Domesticación de expresiones regulares.

Volviendo a RegexLearn, la simplicidad es lo que ofrece. Simplemente tiene que escribir lo que le dice la instrucción y, como resultado, puede ver el texto coincidente, aprendiendo a usar el práctico operador.

Comienza lenta y muy simplemente escribiendo OK en el campo RegEx para continuar con el siguiente paso.

El paso 2 explica por qué es útil aprender expresiones regulares:

supongamos que tiene una lista de nombres de archivo. Y solo desea encontrar archivos .pdf. Después de escribir una expresión ^ w + . pdf $ funcionará.

y solo requiere un toque en Siguiente para continuar.

En el paso 3 aprenderá sobre el punto. : Cualquier personaje

El período . le permite seleccionar cualquier carácter, incluidos caracteres especiales y espacios.

Luego pasa a los conjuntos de caracteres y así sucesivamente, cada paso aumenta en dificultad. Si se queda atascado, no se preocupe; Alt + H le mostrará la respuesta. Hay 55 escalones en total, por lo que cubre una buena cantidad de profundidad.

Publicidad:

Por supuesto, al final, no aprenderá construcciones muy avanzadas que probablemente sean específicas del lenguaje de programación, como The Pattern Code Expression de Perl. ?{?código} o construcciones extendidas ? {código}. Para ver ejemplos de este uso temprano, consulte los enlaces.

Sobre la cuestión de las extensiones de expresiones regulares específicas del lenguaje, la pregunta que concierne es ¿Se pueden reutilizar las expresiones regulares de forma segura entre lenguajes ?, es decir, ¿puedo reutilizar una expresión regular creada en JavaScript literalmente en Python? Al hacerlo, ¿obtendré los mismos resultados y rendimiento? Ese artículo analiza la investigación, que también tiene las precauciones de seguridad abordadas por

PHP y Perl, PHP probablemente porque usa la biblioteca Perl Compatible Regular Expressions (PCRE), fueron los únicos que tenían defensas explícitas contra el comportamiento exponencial del tiempo.

El comportamiento de tiempo exponencial es otra razón por la que realmente debería conocer bien sus expresiones regulares para evitar ataques DoS con expresiones regulares.

La expresión regular Denial of Service (ReDoS) es un ataque de Denial of Service, que aprovecha el hecho de que la mayoría de las implementaciones de expresiones regulares pueden llegar a situaciones extremas que hacen que se ejecuten muy lentamente (exponencialmente en relación al tamaño de la entrada). Un atacante puede hacer que un programa que utiliza una expresión regular entre en estas situaciones extremas y, por lo tanto, permanezca suspendido durante mucho tiempo.

Debido a las diferencias en los algoritmos subyacentes en los que se basan los motores de expresiones regulares, una coincidencia en algunos idiomas puede tardar más que la lineal (polinomial o exponencial en el peor de los casos) en la longitud de la expresión regular y la cadena de entrada. Estos se denominan coincidencias súper lineales, y algunos motores de expresiones regulares son víctimas de este comportamiento súper lineal, mientras que los más sabios lo evitan.

Por lo tanto, las expresiones regulares que caen en esta categoría súper lineal pueden explotarse alimentando cadenas especialmente diseñadas que posteriormente sobrecargarían el host, es decir, el servidor web, como en un ataque DoS, hasta que caiga de rodillas.

Algo a tener en cuenta. Y dado que este es un gran problema, también informamos sobre una herramienta que puede identificar expresiones regulares que consumen muchos recursos, consulte Regexploit. Si bien este es un escenario que es poco probable que cause problemas a los usuarios de RegexLearn, es bueno saber que existe.

Una vez que haya completado todos los pasos de RegexLearn, es hora de poner a prueba sus nuevas habilidades. Aunque RegLearn promete una sección práctica, aún no está lista. Sin embargo, puedes practicar el juego de expresiones regulares de Machine Learning Lab, los creadores que conocimos en Generación automática de expresiones regulares con programación genética, en un juego que incluye 12 niveles de dificultad creciente. Y si desea un enfoque más anticuado, consulte ¿Puede hacer el crucigrama de expresiones regulares ?.

Una adición tardía a la lista de herramientas es py_regular_expressions, una aplicación GUI escrita en tkinter para ayudarlo a practicar las expresiones regulares de Python.

La infraestructura de RegexLearn también es de código abierto y se puede encontrar en su repositorio de GitHub.

<0134757068>

<0596528124>

Publicidad:

También puede gustarte...