5 Stimmen

REGEX: Alles auswählen, was NICHT gleich einer bestimmten Zeichenfolge ist

Das sollte ganz einfach sein. Ich brauche einen regulären Ausdruck, der alles auswählt, was nicht ausdrücklich ein bestimmtes Wort enthält.

Wenn ich also diesen Satz habe: "Es gibt ein Wort in der Mitte dieses Satzes." Und der reguläre Ausdruck findet alles außer "Mitte", sollte ich alles in diesem Satz außer "Mitte" auswählen.

Gibt es eine einfache Möglichkeit, dies zu tun?

Gracias.

2voto

Mike Clark Punkte 9752

Es ist nicht möglich, dass eine einzelne Regex-Übereinstimmungsoperation diskontinuierlich ist.

Sie könnten zwei Erfassungsgruppen verwenden:

(.*)middle(.*)

Verketten Sie dann die Inhalte der Erfassungsgruppen 1 und 2 nach der Übereinstimmung.

Vielleicht möchten Sie die Option "dot also matches newline" in Ihrem Parser aktivieren.
Siehe zum Beispiel Javas DOTALL , .NETs Einzeiler , Perls s etc.

1voto

Andreas Wong Punkte 57642

Ein positiver Ausblick ist der richtige Weg:

/^(.+)(?=middle)/ -- gets everything before middle, not including middle

et

/(?!middle)(.+)$/ -- gets everything after middle, not including middle

Dann fügen Sie einfach die Ergebnisse der beiden

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X