2009-11-07 19 views

Respuesta

7

Las expresiones regulares son una forma de coincidencia de patrones que puede aplicar en contenido de texto. Tomemos por ejemplo los comodines de DOS? y * que puede usar cuando busca un archivo . Ese es un tipo de subconjunto muy limitado de RegExp. Por ejemplo, si quiere encontrar todos los archivos que comienzan con "fn", seguidos de 1 a 4 caracteres aleatorios y que terminan con "ht.txt", no puede hacer eso con los comodines de DOS habituales. RegExp, por otro lado, podría manejar eso y patrones mucho más complicados.

Las expresiones regulares son, en definitiva, una manera de forma eficaz

  • datos mango
  • búsqueda y reemplazar cadenas
  • y permiten que el manejo de cadenas.

menudo una expresión regular puede proporcionar por sí solo manejo de cadenas que otras funcionalidades tales como los métodos y propiedades de cadena incorporados sólo se puede hacer si se utilizan en una función complicada o bucle.

+0

+1 ¡Muy buena analogía! –

4

Cuando intenta encontrar/reemplazar/validar complicados patrones de cuerda.

2

Hay algunos casos en los que, si necesita un mejor rendimiento, debe evitar expresiones regulares a favor de escribir código. Un ejemplo de esto es analizar archivos CSV muy grandes.

2

Las expresiones regulares son un dsl (lenguaje específico del dominio) para analizar el texto. Al igual que xpath es un dsl para atravesar xml. Es esencialmente un mini lenguaje dentro de un lenguaje de propósito general. Puede lograr bastante en una cantidad muy pequeña de código porque está especializado para un propósito limitado. Un uso muy común para expresiones regulares es comprobar si una cadena es una dirección de correo electrónico, número de teléfono, ssn, etc. ...

4

Utilizo expresiones regulares al comparar cadenas (preg_match), reemplazando subcadenas (sed, preg_replace), reemplazando caracteres (sed, preg_replace), búsqueda de cadenas en archivos (grep), división de cadenas (preg_split) etc.

Es un lenguaje de expresión de patrón muy flexible y generalizado y es muy útil saberlo.

PERO! Es como dicen sobre el poker, es muy fácil de aprender, pero muy difícil de dominar.

Me encontré con un question que pensé que era perfecto para un RegEx, eche un vistazo y decida por usted mismo.

2

También hay casos en los que las expresiones regulares son >> NO < < adecuada (en general, siempre hay excepciones).

  • análisis de HTML
  • Análisis de XML

En los casos anteriores un analizador DOM es casi siempre una mejor opción. Las gramáticas son complejas y hay demasiados casos extremos, como etiquetas anidadas.

Además, asegúrese de tener en cuenta a los futuros programadores de mantenimiento (que pueden ser usted). Los comentarios y/o los nombres de método/constante/variable bien elegidos pueden marcar una gran diferencia, especialmente para los desarrolladores que no dominan las expresiones regulares.

+0

debería haber mucho más énfasis en la palabra "no" allí, mientras escaneaba, casi pensaba que estabas abogando por el uso de expresiones regulares para html y xml – Kris

+0

@Kris: ¡Se agregó más cencerro! ;) – TrueWill

0

Las expresiones regulares pueden ser especialmente útiles para validar el formato de entrada de texto libre. Por supuesto, no pueden validar la exactitud de los datos, solo su formato. Y debe tener en cuenta las variaciones regionales para ciertos tipos de valores (por ejemplo, números de teléfono o códigos postales). Pero para los casos en que la entrada válida se puede definir como un patrón de texto, las expresiones regulares hacen un trabajo rápido de la validación.

Cuestiones relacionadas