String Negation mit regulären Ausdrücken
-
18-09-2019 - |
Frage
Ist es möglich, String Negation in regulären Ausdrücken zu tun? Ich brauche alle Strings übereinstimmen, die nicht die Zeichenfolge ".."
enthalten. Ich weiß, Sie ^[^\.]*$
können alle Strings übereinstimmen, die nicht "."
enthalten, aber ich brauche mehr als ein Zeichen zu finden. Ich weiß, dass ich einfach einen String mit ".."
passen könnte und dann den Rückgabewert des Spiels negieren das gleiche Ergebnis zu erreichen, aber ich nur gefragt, ob es möglich war.
Lösung
Sie können die negativen Lookaheads verwenden:
^(?!.*\.\.).*$
, die bewirkt, dass der Ausdruck nicht übereinstimmen, wenn es eine Folge von zwei Perioden überall in der Zeichenfolge finden.
Andere Tipps
^(?:(?!\.\.).)*$
wird nur überein, wenn es keine zwei aufeinanderfolgenden Punkten überall in der Kette sind.