Négation de chaîne en utilisant des expressions régulières
est-il possible de faire la négation de chaîne dans des expressions régulières? J'ai besoin de correspondre à toutes les chaînes qui ne contiennent pas la chaîne ".."
. Je sais que vous pouvez utiliser ^[^.]*$
pour correspondre à toutes les chaînes qui ne contiennent pas "."
mais je dois correspondre à plus d'un caractère. Je sais que je pourrais tout simplement correspondre à une chaîne de caractères contenant ".."
puis nier la valeur de retour du match pour obtenir le même résultat mais je me demandais si c'était possible.
2 réponses
Vous pouvez utiliser des lookheads négatifs:
^(?!.*\.\.).*$
qui fait que l'expression ne correspond pas si elle peut trouver une séquence de deux périodes n'importe où dans la chaîne.
^(?:(?!\.\.).)*$
ne correspond que s'il n'y a pas deux points consécutifs dans la chaîne.