2012-12-28 10 views

Antwort

8

Verwendung negativ Vorgriff Behauptung:

\bnot\b(?!\s+(?:good|bad)) 

Diese not, außer in dem Fall entsprechen, wo good und bad sind direkt nach not in der Zeichenkette. Ich habe Wortgrenze \b hinzugefügt, um sicherzustellen, dass wir das Wort not statt not in nothing oder knot übereinstimmen.


\b ist Wortgrenze. Es prüft, dass das Zeichen vorne Wortzeichen ist und das Zeichen nach nicht ist, und umgekehrt. Wort Zeichen ist normalerweise Englisch Alphabet (a-z, A-Z), Ziffer (0-9), und Unterstrich (_), aber es kann mehr abhängig von der Regex Geschmack.

(?!pattern) ist die Syntax für negatives Look-Ahead mit Null-Breite - es wird überprüft, dass es vom aktuellen Punkt aus keine pattern in der Eingabezeichenfolge mehr finden kann.

\s bezeichnet Leerraumzeichen (Leerzeichen (ASCII 32), neue Zeile \n, Registerkarte \t usw. - Weitere Informationen finden Sie in der Dokumentation). Wenn Sie nicht beliebig aneinander anpassen wollen, ersetzen Sie einfach \s durch (Leerzeichen).

Die + in \s+ entspricht einer oder mehreren Instanzen des vorhergehenden Tokens, in diesem Fall ist es Leerzeichen.

(?:pattern) ist nicht einfangende Gruppe. Es gibt keine Notwendigkeit, good und bad zu erfassen, also ich für die Leistung angeben.

+1

Danke, aber können Sie erklären, was jede Notation bedeutet? – CodeNoob

+0

@CodeNoob: Bearbeitet. Ich nehme an, Sie kennen zumindest die grundlegenden Notationen. – nhahtdh

+0

genial, sehr geschätzt. – CodeNoob