Eu diria que um sinal de contar que um regex não funcionará é quando você precisa de algo que possa ser aninhado. Por exemplo, uma linguagem de programação (ou HTML / XML / etc.). Depois de começar o aninhamento, é necessário armazenar o estado e usar uma máquina de estado.
Além disso, se você olhar para o regex por email aqui, poderá ver que os regexes podem ficar rapidamente ilegíveis. Às vezes, mesmo que você possa usar expressões regulares, o uso de uma gramática torna as coisas mais claras. Mesmo com expressões regulares mais simples, você pode começar rapidamente a criar algo difícil de ler / manter.
Além disso, existem muitas tarefas que não requerem regex. Por exemplo, você pode dividir uma sequência de campos separados por vírgula usando uma expressão regular, mas é muito mais simples dizer string.split (","). Geralmente, uma regex requer várias etapas / pesquisas, enquanto a divisão o faz em uma instrução. Também para uma pesquisa simples, será mais eficiente e mais claro o uso de uma rotina de pesquisa integrada.