2012-03-16 12 views
6

¿Debo crear un RegEx complejo para abordar todos los casos disponibles o debería romper un RegEx complejo en Regex múltiple que?¿Debo crear un RegEx complejo o varios y menos complejos?

Me preocupa el rendimiento con Regex complejo. ¿Será mejor romper el complejo Regex en expresiones regulares simples más pequeñas?

+2

En términos de rendimiento puro, depende de muchas cosas. Pero en términos de legibilidad y mantenibilidad, una combinación de expresiones regulares cortas es inconmensurablemente superior. – bdares

Respuesta

2

No creo que haya mucha diferencia ahora debido a la optimización del compilador, sin embargo, usar uno simple facilitaría la comprensión de su código, lo que a su vez facilita el mantenimiento.

3

Si quiere una respuesta significativa a la pregunta de rendimiento, necesita comparar ambos casos.

Con respecto a la legibilidad/mantenibilidad, puede escribir código ilegible en cualquier idioma y así lo puede hacer con expresiones regulares. Si escribe uno grande, asegúrese de usar el modificador x (IgnorePatternWhitespace en C#) y use los comentarios para construir su expresión regular.

Un ejemplo elegido al azar de una de mis respuestas anteriores en c#:

MatchCollection result = Regex.Matches 
    (testingString, 
     @"  
      (?<=\$) # Ensure there is a $ before the string 
      [^|]* # Match any character that is not a | 
      (?=\|) #Till a | is ahead 
     " 
     , RegexOptions.IgnorePatternWhitespace); 
+0

También eche un vistazo a la publicación de mi blog: [¿Escribe expresiones legibles legibles?] (Http://blog.xisb.de/?p=57), donde proporciono más detalles sobre el uso de 'RegexOptions.IgnorePatternWhitespace'. – stema

-1

expresiones regulares complejas pueden ser muy lento, pero depende de la expresión regular y su entorno. Tomemos el caso de string.trim(). Se puede implementar trivialmente con expresiones regulares. Puede usar una expresión regular o dos (eliminar los espacios en blanco delanteros y traseros por separado). Aquí hay alguien que tomó 11 implementaciones diferentes de ajustes de JavaScript y las comparó en diferentes navegadores: http://blog.stevenlevithan.com/archives/faster-trim-javascript. En ese caso, una expresión regular pierde mucho tiempo en la mayoría de las situaciones.

Cuestiones relacionadas