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.