¿Es una obligación para todos los programadores aprender expresiones regulares? [cerrado]

80

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 una necesidad para todos los programadores de todos los campos? ¿O es una necesidad para la programación de algunos campos en particular?

Preguntas relacionadas:

pregunta user 12.04.2017 - 09:31

23 respuestas

112

Las expresiones regulares son una herramienta increíblemente práctica, disponible en tantos idiomas que la mayoría de los desarrolladores las aprenderán tarde o temprano.

Para un entrevistador, son una buena forma de explorar la experiencia durante una entrevista. Si está entrevistando a alguien que reclama años de experiencia y no los entiende, debe seguir investigando.

    
respondido por el ptyx 17.08.2012 - 22:02
54

Las expresiones regulares son una herramienta. Resulta que es una herramienta muy útil, por lo que muchas personas eligen aprender a usarla. Sin embargo, no hay un "requisito" para que aprendas a usar esta herramienta en particular, como tampoco hay un "requisito" para que aprendas algo más.

    
respondido por el eykanal 08.02.2012 - 17:47
33

No me sorprendería si, por ejemplo, un programador de juegos o un programador de LHC nunca aprendiera expresiones regulares. Incluso podría darle un pase a un programador de juegos para que no sepa SQL.

Pero, si está trabajando en sistemas de información de cualquier tipo, y si no conoce expresiones regulares, está haciendo un mal servicio.

Por otro lado, no esperaría que su programador estándar de IS sepa las matrices matemáticas que un programador de juegos haría. Hay distintas disciplinas de los programadores, sin embargo, debemos estar bajo el paraguas de "sistemas de información".

    
respondido por el Jonathan Rich 08.02.2012 - 17:59
22

Las expresiones regulares son una forma muy concisa de expresar cómo hacer coincidir patrones en el texto.

El requisito de analizar y extraer datos de un texto o validar que un texto se ajusta a un patrón específico aparece muy a menudo en la programación, por lo que diría que sí, es importante aprender sobre ellos y entenderlos.

Son una buena herramienta para tener en tu 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 .

    
respondido por el Oded 08.02.2012 - 17:55
15

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 candidatos para un puesto, me gustaría profundizar más si se sintieran obligados a adquirir sus propias habilidades para registrarse. ¿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 en HTML y regex y verá bastantes preguntas y bastantes razones por las que regex es un inadaptado.

Se requiere la capacidad de realizar una OOD adecuada antes de abogar por la contratación de un entrevistado, el conocimiento de las expresiones regulares ciertamente no lo es. Y realmente no creo que nadie crea que puede ser un programador más productivo que conozca 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 de Perl) Los uso regularmente para buscar y reemplazar sin embargo.

    
respondido por el Rune FS 08.02.2012 - 21:10
14

Independientemente del dominio en el que esté trabajando, las expresiones regulares son una herramienta útil para saber porque la mayoría de los lenguajes de programación están escritos como texto simple. Por lo tanto, Regex es 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 con mayor rapidez y precisión.

Esto es de lo que trata el Capítulo 3 del Programador Pragmático, donde el texto simple es la "materia prima básica de la programación".

    
respondido por el JohnTESlade 08.02.2012 - 19:41
10

Jeff Atwood escribió un excelente blog sobre expresiones regulares, en ella hay una cita sorprendente:

Some people, when confronted with a problem, think "I know, I'll use regular 
expressions." Now they have two problems. [Jamie Zawinski]

También hay un gran respuesta para una buena pregunta un desbordamiento de pila que quizás desee revisar.

Definitivamente deberías saber un poco al respecto. Las expresiones regulares son fáciles de aprender pero difíciles de dominar. No necesitas 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.

    
respondido por el Makach 23.05.2017 - 14:40
8

Trabajo en una base de código incrustada que no tiene una biblioteca de expresiones regulares disponible. Una determinada tarea requirió 275 líneas de código, y tomó alrededor de dos semanas para depurar todos los casos de la esquina, de ida y vuelta entre el probador y el desarrollador. Más tarde escribí una función para hacer lo mismo como parte de una utilidad javascript. La misma tarea exacta que usa expresiones regulares usó 10 líneas de código y funcionó perfectamente en aproximadamente 15 minutos.

¿ necesita expresiones regulares? Técnicamente no, pero es tonto ignorar intencionalmente una herramienta tan eficiente.

    
respondido por el Karl Bielefeldt 08.02.2012 - 20:49
6

para citar otra respuesta:

  

Las expresiones regulares son una forma muy concisa de expresar cómo hacer coincidir   patrones en el texto.

Por lo tanto, 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 gran parte del texto sea específico del dominio de su área (por ejemplo, bioinformática).

He trabajado en tres sistemas empresariales diferentes (en tres compañías diferentes durante diez años) y los he escrito menos de cinco veces, y eso incluye copiar y pegar dos veces un validador de correo electrónico básico.

    
respondido por el NimChimpsky 08.02.2012 - 18:04
4

Las expresiones regulares se pueden considerar como una herramienta de procesamiento, multiplataforma y multiplataforma muy útil. Puedo usar expresiones regulares en mi código, puedo usar expresiones regulares en mi editor, puedo usar expresiones regulares en la línea de comandos!

No es solo lo que necesitas, o deberías aprenderlos. Es más como

¡WOW! ¡Me encanta REGEX!

    
respondido por el Xeoncross 08.02.2012 - 19:29
4

No es necesario que conozca todas las pequeñas expresiones de expresiones regulares de memoria para ser un gran programador, especialmente porque tienden a variar un poco en cuanto a diferentes implementaciones y lenguajes de programación. Lo que haces necesitas saber es

  • ¿Qué son las expresiones regulares y expresiones regulares?
  • Qué tipo de cosas hacen de manera eficiente (análisis de idiomas regulares)
  • ¿Qué tipo de cosas no son suficientes (analizar cosas anidadas, usar toneladas de referencias inversas)?
  • Dónde obtener información sobre la sintaxis cada vez que necesite leer o escribir una.

De todos modos, ni siquiera tiene que preocuparse demasiado por si será necesario demasiado esfuerzo para aprenderlos en primer lugar. Los operadores más simples ( . , * , | , () , etc.) están casi universalmente presentes y van de una manera larga .

    
respondido por el hugomg 08.02.2012 - 19:58
3

Como ya se mencionó, Regex es una herramienta , una herramienta muy útil IMHO.

Considera este ejemplo:

//fomat number using string.replace and regex in javascript
function numberWithCommas(x) {
    return x.toString().replace(/\B(?=(?:\d{3})+(?!\d))/g, ",");
} 

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

    
respondido por el emont01 08.02.2012 - 21:24
2

No es un deber. Solo necesitas estar consciente de su existencia y cuándo usarlos. Los detalles específicos de la sintaxis son fáciles de encontrar y utilizar correctamente con las herramientas de Google y en línea.

    
respondido por el Den 09.02.2012 - 13:05
2

Realmente te aconsejaría que aprendieras expresiones regulares. En el trabajo, cuando estamos contratando programadores, los candidatos que no conocen regexp generalmente son eliminados rápidamente. No porque absolutamente necesiten saber 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 más involucrado en la programación web, donde las expresiones regulares son algo que seguramente se encontrará mucho, tanto en el lado del servidor como en el del cliente. Si usted fuera un programador de ensamblaje para un sistema incorporado en un lavaplatos, probablemente no se encontraría con expresiones regulares. Pero es posible que aún sea ú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 múltiples archivos, etc.). / p>

Además, le resultará más fácil que otros programadores lo reconozcan si lo sabe.

    
respondido por el Aron Cederholm 28.02.2012 - 03:19
1

¿Es un deber? Ya sabes lo que DEBES saber: que existen, qué son y para qué se usan. Tu trabajo como programador es resolver problemas. Ahora sabe lo suficiente como para comenzar a incluirlos en su solución para resolver su problema. ¿Debes aprender expresiones regulares? Absolutamente. La prioridad depende de usted ... hay trabajos en los que se utilizarán todos los días y trabajos en los que nunca se utilizarán. Una guía simple sería la cantidad de patrones que corresponderán con los problemas que espera encontrar.

    
respondido por el jmoreno 09.02.2012 - 08:35
1

Hmm, necesito separar con comas y generar esta lista de cadenas, permítanme escribir una función que contenga un bucle for que tome un argumento separador y seguir agregándolas juntas ... o simplemente podría usar esta 'combinación' existente comando.

Necesito clasificar estos objetos complejos en función de un par de atributos que tiene cada objeto, permítame recordarme cómo escribir una función de clasificación que hace eso, oh no, puedo usar la función de clasificación estándar existente. soporte de idiomas 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.

Me da un poco de miedo la idea de los métodos virtuales, pero debería ayudarme a reducir estas listas, cada una para un tipo diferente de elemento, hasta una sola lista. Entonces no tengo que escribir media docena de declaraciones similares procesando cada lista de una manera diferente. Supongo que debo estudiar mucho y aprender esas cosas porque mi código será mucho más simple y limpio si hago eso.

Necesito extraer de este archivo de texto estos pares de palabras y valores entre todos estos otros ruidos, permítame escribir un analizador de cincuenta líneas para leer los caracteres uno por uno y si alguno de ellos parece el comienzo de lo que Estoy buscando. Estableceré esta variable de estado y comenzaré a analizarla de manera diferente, etc. etc. Por supuesto, mi caso es obviamente tan especial que nadie más ha encontrado 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 debo llevar esos libros de programación que nunca leí a la librería de segunda mano.

    
respondido por el Benedict 09.02.2012 - 13:15
1

Respuesta corta: No Pero ... el conocimiento es poder.

Soy un desarrollador web y encuentro que cualquier expresión regular que generalmente necesito ya ha sido escrita para mí. Sin embargo, he tenido problemas con copiar y pegar y no darme cuenta de lo que estaba haciendo o no, lo cual 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 permitido en la especificación de la dirección de correo electrónico. De hecho, muchas personas utilizan gmail con [email protected] para que sea más fácil filtrar "nombre de sitio" en caso de que elijan spam.

    
respondido por el TheDPQ 10.02.2012 - 17:32
0

expresiones regulares? Hmmm ... a veces es útil conocerlos pero la mayoría del tiempo siempre usas lo mismo. He usado regex bastante a menudo, pero no diría que estoy de acuerdo con eso. No me gusta nada y creo que hay cosas más importantes que saber que regex.

Pero en la validación de formularios o datos es muy útil. Creo que casi todas las formas profesionales están validadas con expresiones regulares. ASP.NET usándolo.

Pero en absoluto: intente hacer una expresión cuando la necesite y guárdela. Los usarás con suerte todos más de una vez. ¡Pero no pierdas el tiempo con RegEx!

    
respondido por el Smokefoot 08.02.2012 - 17:56
0

Depende del área / plataforma en la que esté trabajando

  1. Para la aplicación de escritorio, puede vivir una vida Kool sin saber nada acerca de las expresiones regulares. Pero tenga en cuenta que Visual Studio tiene búsquedas de expresiones regulares, pero me pregunto si alguien lo usará de manera regular. Pienso que no (primero debes corregir tu expresión regular porque puedes hacer una búsqueda :)).

  2. Como desarrollador web, lo más probable es que tenga que aprender Expresión regular. Puede salirse con la suya porque puede encontrar fácilmente un fragmento de código en línea que le bastará, pero el aprendizaje le ayudará.

Hay áreas como documentación, litigios, asuntos legales donde la expresión regular es una herramienta indispensable. Tienes que saberlo. Si no, simplemente no conseguirás el trabajo.

Entonces, en resumen, si no es parte de una descripción del trabajo, ni siquiera te preocupes por eso. Si te gusta aprenderlo, aprendelo por diversión.

    
respondido por el Noname 08.02.2012 - 18:50
0

Las expresiones regulares son una herramienta muy útil, y hay muchas situaciones en las que el programador debería usarlas. No deberías aprenderlos todos de memoria para usarlos. Solo usa la referencia y haz tu tarea. Después de las tareas 10-20-50-100 (según el programador) en las que haya utilizado expresiones regulares, las conocerá de memoria. Se están aprendiendo por sí mismos, no debes aprenderlos especialmente.

    
respondido por el Larry Cinnabar 08.02.2012 - 20:46
0

Ya veo muchas respuestas a esto, pero parece que todas tienen que ver con los méritos de conocer expresiones regulares como herramienta en la caja de herramientas del programador.

Prefiero pensar en las expresiones regulares como el tipo de conocimiento que expande 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, lo que es útil para casi todos los tipos de programación, y de comprender mejor cómo funcionan las herramientas que utilizamos 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 para encontrar / reemplazar en mi editor todo el tiempo y mido cuánto más productivos me hacen.

Entonces, si bien no es necesario, creo que es una de las primeras herramientas que un programador debería aprender.

    
respondido por el Avi 09.02.2012 - 12:11
0

Rob Pike no lo cree :

  

Las expresiones regulares son difíciles de escribir, difíciles de escribir bien y pueden ser   caro en relación con otras tecnologías. Lexing estándar y análisis   Las técnicas son tan fáciles de escribir, tan generales y tan adaptables que hay   no hay razón para usar expresiones regulares.

     

Otra forma de verlo es que los lexers y el análisis coincidan   Patrones definidos estáticamente, pero la fuerza de las expresiones regulares es que   Proporcionan una forma de expresar patrones dinámicamente. Son geniales en   Editores de texto y herramientas de búsqueda, pero cuando se sabe en tiempo de compilación   ¿Cuáles son las cosas que estás buscando, las expresiones regulares traen   mucha más generalidad y flexibilidad de la que necesitas.

     

Fomentar expresiones regulares como una panacea para todo el procesamiento de texto   Los problemas no solo son perezosos y una mala ingeniería, sino que también refuerza   su uso por parte de personas que no deberían usarlos en absoluto.

Vale la pena notar que Pike reconoce que tienen un lugar, por supuesto, y, en mi humilde opinión, las expresiones regulares son una herramienta bastante poderosa, una que recompensa absolutamente el tiempo que he pasado aprendiendo a usar, y desde ese punto de vista, Absolutamente recomiendo aprenderlos. Pero es posible que el problema real sea que son una curita que me ha permitido saber menos sobre el lexing y el análisis de lo que debería. :)

    
respondido por el Weston C 16.08.2012 - 23:16
0

Permítanme decir que las expresiones regulares a menudo son la herramienta adecuada para el trabajo y son muy útiles, especialmente con aplicaciones que procesan mucho texto. Sin embargo, memorizarlos es una locura. Tengo una hoja de trucos fijada en mi muro que tiene todos los caracteres especiales, anclas, clases de personajes, modificadores de patrones, metacaracteres ... Solo dedique los 20 minutos que toma aprender cómo usarlos y obtenga una hoja de trucos para mantener seguimiento de todo lo demás. Todo lo que necesita es poder escribir una expresión regular cuando la necesite, lo que suele ser cada 6 meses, aproximadamente con la frecuencia con la que se encuentra un problema en el que son la mejor herramienta para el trabajo. A menos que esté en Perl, Latex, Emacs o algún otro equipo de procesamiento de texto pesado.

    
respondido por el Jonathan Henson 18.08.2012 - 00:23

Lea otras preguntas en las etiquetas