Soy nuevo en programación, y en una entrevista recibí una pregunta sobre expresiones regulares; No hace falta decir que no pude responder. ¿Entonces me preguntaba si debería aprender la expresión regular? ¿Es imprescindible para todos los programadores de todos los campos? ¿O es imprescindible para la programación de algunos campos en particular?
Preguntas relacionadas:
regular-expressions
usuario
fuente
fuente
Respuestas:
Las expresiones regulares son una herramienta increíblemente conveniente, disponible en tantos idiomas que la mayoría de los desarrolladores las aprenderán tarde o temprano.
Para un entrevistador, son una buena manera de probar la experiencia durante una entrevista. Si está entrevistando a alguien que reclama años de experiencia y que no lo comprende, debe profundizar más.
fuente
Las expresiones regulares son una herramienta. Resulta ser una herramienta muy útil, por lo que muchas personas eligen aprender a usarla. Sin embargo, no hay ningún "requisito" para que usted aprenda a usar esta herramienta en particular, como tampoco lo es para que aprenda algo más.
fuente
if (!(foo && bar))
=>if (!foo || !bar)
. Tal vez lo has estado usando y no te has dado cuenta, o tal vez no te han enseñado el material correcto.No me sorprendería si, por ejemplo, un programador de juegos o un programador en el LHC nunca aprendiera expresiones regulares. Incluso podría darle una oportunidad a un programador de juegos por no conocer SQL.
Pero, si está trabajando en sistemas de información de cualquier tipo, y si no conoce las expresiones regulares, se está perjudicando.
Por otro lado, no esperaría que su programador de IS estándar conozca las matemáticas de matriz que un programador de juegos conocería. Existen distintas disciplinas de programador, sin embargo, debemos estar bajo el paraguas de los "sistemas de información".
fuente
Las expresiones regulares son una forma muy concisa de expresar cómo combinar patrones en el texto.
El requisito de analizar y extraer datos del texto o validar que algunos textos se ajustan a un patrón específico surge con mucha frecuencia en la programación, por lo que diría que sí, es importante aprender sobre ellos y comprenderlos.
Son una buena herramienta para tener en su caja de herramientas y espero que cualquier programador experimentado sepa cómo usarlos.
Uno de los mejores recursos para aprender sobre expresiones regulares es el libro de Jeffery Friedl, Mastering Regular Expressions . Es bastante avanzado, por lo que es posible que desee leerlo cuando haya tenido más experiencia.
Puede comenzar con el tutorial en regular-expressions.info .
fuente
En contraste con la mayoría de las respuestas aquí, no creo que el conocimiento de los registros sea una habilidad necesaria para ser un programador productivo. Cuando entrevisto a los candidatos para un puesto, profundizaría si se sintieran obligados a desarrollar sus habilidades de autoexamen. ¿Por qué? a menudo se usan en lugares porque les gusta el martillo correcto, pero a menudo lo que necesitabas era un destornillador. Busque SO para HTML y expresiones regulares y verá bastantes preguntas y varias razones por las cuales la expresión regular no es adecuada.
Se requiere la capacidad de hacer una OOD adecuada antes de abogar por contratar a un entrevistado, el conocimiento de las expresiones regulares ciertamente no lo es. Y en realidad no creo que nadie crea que puede ser un programador más productivo que conoce expresiones regulares pero que carece de áreas como el análisis, el diseño y el conocimiento del marco utilizado
Claro que a veces son útiles, pero en mis más de 20 años como desarrollador profesional creo que los he usado menos de 20 veces en código (e incluso he codificado algunos scripts en perl). Los uso regularmente para hacer búsquedas y reemplazar sin embargo.
fuente
Independientemente del dominio en el que esté trabajando, las expresiones regulares son una herramienta útil para conocer porque la mayoría de los lenguajes de programación están escritos como texto sin formato. Regex es, por lo tanto, una excelente manera de manipular y refactorizar su código fuente y está integrado en muchos editores de texto. He visto a innumerables programadores realizar cambios repetidos en los archivos de origen cuando una expresión regular haría los cambios de manera mucho más rápida y precisa.
De esto es de lo que habla el Capítulo 3 del Programador Pragmático, siendo el texto plano la "materia prima básica de la programación".
fuente
Jeff Atwood escribió un gran blog sobre expresiones regulares, en él hay una cita increíble:
También hay una gran respuesta a una buena pregunta sobre un desbordamiento de pila que quizás desee consultar.
Definitivamente deberías saber un poco al respecto. Las expresiones regulares son fáciles de aprender pero difíciles de dominar. No necesita aprender todo sobre él para comenzar a usarlo. Solo sé sensato al respecto.
tl; dr
Debe conocer la tecnología para poder tomar una buena decisión sobre cuándo usarla.
fuente
Trabajo en una base de código incrustada que no tiene una biblioteca de expresiones regulares disponible. Una tarea determinada requería 275 líneas de código, y tomó alrededor de dos semanas depurar todos los casos de esquina, de un lado a otro entre el probador y el desarrollador. Más tarde escribí una función para hacer lo mismo como parte de una utilidad de JavaScript. La exacta misma tarea utilizando expresiones regulares utiliza 10 líneas de código y funcionó a la perfección en unos 15 minutos.
¿ Necesitas expresiones regulares? Técnicamente no, pero es una tontería intencionalmente permanecer ignorante de una herramienta tan eficiente.
fuente
para citar otra respuesta:
Entonces, si esta es una parte importante de su trabajo, probablemente haya una mejor manera de diseñar el sistema que está desarrollando. A menos que mucho texto sea de dominio específico para su área (por ejemplo, bioinformática).
He trabajado en tres sistemas empresariales diferentes (en tres empresas diferentes durante diez años) y los he escrito menos de cinco veces, y eso incluye copiar y pegar un validador de correo electrónico básico dos veces.
fuente
Las expresiones regulares pueden considerarse una herramienta de procesamiento muy útil, multiplataforma y multiplataforma. Puedo usar regex en mi código, puedo usar regex en mi editor, ¡puedo usar regex en la línea de comandos!
No es solo lo que necesita, o debe aprenderlos. Es mas como
¡GUAUU! ¡ME ENCANTA EL REGEX!
fuente
No necesita conocer todas las pequeñas peculiaridades de expresiones regulares para ser un gran programador, especialmente porque todas tienden a variar un poco en diferentes implementaciones y lenguajes de programación. Lo que usted no necesita saber es
De todos modos, ni siquiera tiene que preocuparse demasiado por si tomará demasiado esfuerzo aprenderlos en primer lugar. Los operadores más sencillos (
.
,*
,|
,()
, etc) son casi universalmente presente y recorrer un largo camino!fuente
Como ya se mencionó, Regex es una herramienta , una herramienta muy útil en mi humilde opinión.
Considere este ejemplo:
Solo una línea para convertir, por ejemplo, un número como este 1000000.00 en "1,000,000.00"
Usar cualquier otro método será mucho más complejo
fuente
No es un deber. Solo necesita ser consciente de su existencia y cuándo usarlos. Los detalles de sintaxis son fáciles de encontrar y acertar utilizando google y herramientas en línea.
fuente
Realmente te recomendaría que aprendas expresiones regulares. En el trabajo, cuando contratamos programadores, los candidatos que no conocen regexp generalmente se eliminan rápidamente. No porque necesiten absolutamente conocer expresiones regulares, sino porque es un muy buen indicador de su nivel de comprensión de la programación y el nivel de adicción a la programación.
Un programador real conoce sus expresiones regulares.
Sin embargo, esto es un poco parcial, ya que estoy principalmente involucrado en la programación web, donde las expresiones regulares son algo que seguramente encontrarás mucho, tanto en el lado del servidor como en el lado del cliente. Si usted fuera un programador de ensamblaje para un sistema integrado en un lavavajillas, probablemente no encontraría expresiones regulares. Pero aún podría ser útil, ya que en la mayoría de los casos es más capaz de manejar su entorno de desarrollo cuando conoce expresiones regulares (buscar y reemplazar, buscar un archivo, buscar en varios archivos, etc.).
Además, le resultará más fácil ser reconocido por otros programadores si lo sabe.
fuente
¿Es un deber? Ya sabes lo que DEBES saber: que existen, qué son y para qué sirven. Tu trabajo como programador es resolver problemas. Ahora sabe lo suficiente como para comenzar a factorizarlos en su solución para resolver su problema. ¿Deberías aprender expresiones regulares? Absolutamente. La prioridad depende de usted ... hay trabajos donde se usarán todos los días, y trabajos donde nunca se usarán. Una guía simple sería la cantidad de patrones que coinciden con los problemas que espera encontrar.
fuente
Hmm, necesito separar por comas y generar esta lista de cadenas, déjame escribir una función que contenga un bucle for que tome un argumento separador y seguir agregándolas juntas ... o simplemente podría usar este comando 'join' existente.
Necesito clasificar estos objetos complejos en función de un par de atributos que tiene cada objeto, permítanme recordarme cómo escribir una función de clasificación que haga eso, oh no, espera, solo puedo usar la función de clasificación estándar existente que admite este lenguaje. Tendré que aprender a escribir un comparador personalizado, pero no debería ser demasiado difícil, obviamente es mejor que mantener mi propia función de clasificación.
La idea de los métodos virtuales me asusta un poco, pero debería ayudarme a reducir estas listas, cada una para un tipo diferente de elemento, a una sola lista. Entonces no tengo que escribir media docena de declaraciones similares procesando cada lista de una manera diferente. Supongo que debería estudiar mucho y aprender esas cosas porque mi código será mucho más simple y limpio si lo hago.
Necesito extraer de este archivo de texto estos pares de palabras y valores entre todos estos otros ruidos, permítanme escribir un analizador de cincuenta líneas para leer los caracteres uno por uno y si uno de los caracteres parece el comienzo de lo que soy. buscando, estableceré esta variable de estado y comenzaré a analizarla de manera diferente, etc., por supuesto, mi caso es obviamente tan especial que nadie más se ha encontrado con un problema como este antes e inventó una solución genérica que toma una línea de código para hacerlo. Eso me recuerda que debería llevar esos libros de programación que nunca leí a la librería de segunda mano.
fuente
Respuesta corta: No, pero ... el conocimiento es poder.
Soy desarrollador web y encuentro que cualquier expresión regular que generalmente necesito ya ha sido escrita para mí. Sin embargo, he tenido problemas para copiar y pegar y no darme cuenta de lo que estaba haciendo o no, lo que es un peligro de copiar y pegar CUALQUIER COSA.
Un ejemplo: una expresión regular de correo electrónico que copié y pegué no permitió un período o más en un correo electrónico que está permitido en la especificación de la dirección de correo electrónico. De hecho, muchas personas usan gmail con [email protected] para que sea fácil filtrar 'sitename' si eligen enviar spam.
fuente
¿expresiones regulares? Hmmm ... a veces es útil conocerlos, pero la mayoría de las veces siempre usas lo mismo. He usado regex con bastante frecuencia, pero no diría que soy bueno con él. No me gusta en absoluto y creo que hay cosas más importantes que saber que la expresión regular.
Pero en la validación de formuladores o datos es muy útil. Creo que casi todos los formularios profesionales están validados con expresiones regulares. ASP.NET usándolo.
Pero en absoluto: intente hacer una expresión cuando la necesite y guárdela. Los usará con suerte más de una vez. ¡Pero no pierdas tu tiempo con RegEx!
fuente
Depende del área / plataforma en la que esté trabajando
Para la aplicación de escritorio, puede vivir una vida kool sin saber nada sobre expresiones regulares. Pero ten en cuenta que Visual Studio tiene una búsqueda de expresiones regulares, pero me pregunto si alguien lo usa de manera regular. Estoy pensando que no (primero debes corregir tu expresión regular porque puedes hacer una búsqueda :)).
Como desarrollador web, lo más probable es que tengas que aprender Expresión regular. Puede salirse con la suya porque puede encontrar fácilmente fragmentos de código en línea que serán suficientes para lo que necesite, pero el aprendizaje ayudará.
Hay áreas como documentación, litigios, asuntos legales donde la expresión regular es una herramienta indispensable. Tienes que saberlo Si no lo haces, simplemente no conseguirás el trabajo.
En resumen, si no es parte de una descripción del trabajo, ni se preocupe. Si te gusta aprenderlo, aprende por diversión.
fuente
Las expresiones regulares son una herramienta muy útil, y hay muchas situaciones en las que el programador debería usarlas. No debe aprenderlos todos de memoria para usar. Solo usa la referencia y haz tu tarea. Después de 10-20-50-100 (dependiendo del programador) tareas en las que ha utilizado expresiones regulares, las sabrá todas de memoria. Se están aprendiendo por sí mismos, no debes aprenderlos especialmente.
fuente
Ya veo muchas respuestas a esto, pero todas parecen ser sobre los méritos de conocer las expresiones regulares como una herramienta en la caja de herramientas del programador.
Prefiero pensar en las expresiones regulares como el tipo de conocimiento que amplía la comprensión de cómo funcionan las computadoras. Una vez que alguien realmente entiende lo que es un lenguaje regular, y que puede expresarlo con tres operaciones simples, creo que le brinda algo más que una simple herramienta para validar cadenas simples.
Se vuelven capaces de comprender mejor el análisis en general, que es útil para casi todo tipo de programación, y comprender mejor cómo funcionan las herramientas que usamos regularmente (compilador, editor, navegador, etc.).
Los beneficios prácticos de usar expresiones regulares son, por supuesto, enormes. Incluso si no "programa" con ellos, uso expresiones regulares haciendo buscar / reemplazar en mi editor todo el tiempo, y mido cuánto más productivos me hacen.
Entonces, aunque no es necesario, creo que es una de las primeras herramientas que un programador debe aprender.
fuente
Rob Pike no lo cree así :
Vale la pena señalar que Pike reconoce que tienen un lugar, por supuesto, y en mi humilde opinión, las expresiones regulares son una herramienta bastante poderosa, que recompensa absolutamente el tiempo que he pasado aprendiendo a usar, y desde ese punto de vista, recomiendo absolutamente aprender ellos. Pero es posible que el problema real sea que son una curita que me ha permitido saber menos sobre lexing y análisis de lo que debería. :)
fuente
Permítanme decir que las expresiones regulares a menudo son la herramienta adecuada para el trabajo y son bastante útiles, especialmente con aplicaciones que procesan mucho texto. Sin embargo, memorizarlos es una locura. Tengo una hoja de trucos pegada en mi pared que tiene todos los caracteres especiales, anclas, clases de personajes, modificadores de patrones, metacaracteres ... Solo dedique los 20 minutos que toma aprender a usarlos y obtener una hoja de trucos para mantener seguimiento de todo lo demás. Para todo lo que necesita es poder escribir una expresión regular cuando la necesite, que generalmente es aproximadamente cada 6 meses, casi siempre que encuentre un problema en el que sean la mejor herramienta para el trabajo. A menos que esté en Perl, Latex, Emacs o algún otro equipo de procesamiento de texto pesado.
fuente