Buscar..


Observaciones

Debido a que las expresiones regulares se limitan a una gramática regular o una gramática libre de contexto, hay muchos usos incorrectos comunes de las expresiones regulares. Entonces, en este tema hay algunos ejemplos de cuándo NO debe usar expresiones regulares, sino usar su idioma favorito en su lugar.

Algunas personas, cuando se enfrentan a un problema, piensan:
"Lo sé, usaré expresiones regulares".
Ahora ellos tienen dos problemas.

- Jamie Zawinski

Parejas coincidentes (como paréntesis, paréntesis ...)

Algunos motores de expresiones regulares (como .NET) pueden manejar expresiones sin contexto, y funcionarán. Pero ese no es el caso para la mayoría de los motores estándar. E incluso si lo hacen, terminará teniendo una expresión compleja de difícil lectura, mientras que el uso de una biblioteca de análisis podría facilitar el trabajo.

Operaciones de cadena simples

Debido a que las expresiones regulares pueden hacer mucho, es tentador usarlas para las operaciones más simples. Pero usar un motor de expresiones regulares tiene un costo en la memoria y en el uso del procesador: necesita compilar la expresión, almacenar el autómata en la memoria, inicializarlo y luego alimentarlo con la cadena para ejecutarlo.

¡Y hay muchos casos en los que simplemente no es necesario usarlo! Sea cual sea el idioma que elija, siempre tiene las herramientas básicas de manipulación de cadenas. Entonces, como regla general, cuando hay una herramienta para realizar una acción en su biblioteca estándar, use esa herramienta, no una expresión regular:

  • dividir una cadena?

Por ejemplo, el siguiente fragmento de código funciona en Python, Ruby y Javascript:

'foo.bar'.split('.')

Es más fácil de leer y entender, y es mucho más eficiente que la expresión regular equivalente (de alguna manera):

(\w+)\.(\w+)
  • ¿Desvío de espacios?

¡Lo mismo se aplica a los espacios finales!

'foobar     '.strip() # python or ruby
'foobar     '.trim() // javascript

Lo que sería equivalente a la siguiente expresión:

([^\n]*)\s*$ # keeping \1 in the substitution

Análisis de HTML (o XML, o JSON, o código C, o ...)

Si desea extraer algo de una página web (o cualquier lenguaje de representación / programación), una expresión regular es la herramienta incorrecta para la tarea. En su lugar, debe utilizar las bibliotecas de su idioma para lograr la tarea.

Si desea leer HTML, XML o JSON, simplemente use la biblioteca que lo analiza correctamente y lo sirve como objetos utilizables en su idioma favorito. Terminarás con un código legible y más mantenible, y no terminarás



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow