Le préanalyse devrait venir en premier:
(\b(?!(the|as)\b)\w+\b)
J'ai également ajouté des limites de mots pour vous assurer qu'il correspond uniquement à des mots entiers sinon il ne parviendrait pas à correspondre au mot complet « comme » mais il égalerait avec succès la lettre "s" de ce mot.
Vous pouvez également considérer ce que les \w
correspondent et si cela répond à vos besoins. Si vous cherchez des mots en anglais, vous êtes probablement intéressé par les lettres mais pas les chiffres et vous pouvez inclure des caractères de ponctuation qui sont exclus par \w
, tels que les apostrophes. Vous pouvez essayer quelque chose comme ça à la place (Rubular):
/(\b(?!(?:the|as)\b)[a-z'-]+\b)/i
Pour correspondre des mots plus précisément dans un langage humain, vous pouvez envisager d'utiliser une bibliothèque d'analyse syntaxique de langage naturel au lieu d'expressions régulières.
Pourriez-vous être un peu plus précis sur ce qui ne fonctionne pas? Est-ce qu'il ne correspond pas à certains mots que vous voulez qu'il corresponde? Est-ce que cela correspond à des mots qui devraient échouer? Pouvez-vous donner quelques exemples montrant où cela échoue, et expliquer ce que vous vouliez plutôt? –