Estive ontem a desenferrujar um pouco o meu conhecimento de expressões regulares com umas brincadeiras em PHP e cheguei à conclusão que excluir uma palavra é mais complicado do que parece.

Tomando como exemplo a expressão regular abcde[^fghi]*jklmn:

  1. O texto “abcdejklmn” valida positivamente
  2. O texto “abcdefjklmn” não passa na expressão regular
  3. O texto “abcdefghijklmn” também não passa

O meu problema é entre o 2ª e o 3ª caso. Como ei de fazer se pretender que a comparação falhe para as sequências “fghi” que possam surgir mas não falhe se surgir qualquer dos caracteres “f”, “g”, “h”ou “i” isoladamente?

Aceitam-se sugestões; mais um pouco a investigar o assunto sem sucesso e acabo por recorrer a substrings encadeados para resolver a questão :| Feio… mas funcional.