Diría que una señal reveladora de que una expresión regular no funcionará es cuando necesita algo que pueda anidarse. Por ejemplo, un lenguaje de programación (o HTML / XML / etc.). Una vez que comience a anidar, debe almacenar el estado y utilizar una máquina de estados.
Además, si mira las expresiones regulares para correo electrónico aquí , puede ver que las expresiones regulares pueden volverse ilegibles rápidamente. A veces, aunque puede usar expresiones regulares, usar una gramática aclara las cosas. Incluso con expresiones regulares más simples, puede comenzar rápidamente a hacer algo que sea difícil de leer / mantener.
Además, hay muchas tareas que no requieren expresiones regulares. Por ejemplo, puede dividir una cadena de campos separados por comas utilizando una expresión regular, pero es mucho más simple decir string.split (","). En general, una expresión regular requerirá múltiples pasos / búsquedas, mientras que la división lo hará en una sola declaración. Además, para una búsqueda simple, será más eficiente y más claro usar una rutina de búsqueda integrada.