Springe zum Inhalt

Notepad++ – Suche nach Zeilen, die einen String nicht enthalten

Mein bevorzugter Editor ist Notepad++. Seit längerem beherrscht Notepad++ auch die Suche nach regulären Ausdrücken. Standardgemäß gibt es mit regulären Ausdrücken keine Möglichkeit, Zeilen zu finden, die einen Suchbegriff nicht enhalten. Mit einem kleinen Trick kann diese Einschränkung umgangen werden: mit negativen Look-Arounds.

"(?!pattern)"
	 A zero-width negative look-ahead assertion.  For example
	 "/foo(?!bar)/" matches any occurrence of "foo" that isn't
	 followed by "bar".  Note however that look-ahead and
	 look-behind are NOT the same thing.  You cannot use this
	 for look-behind.

	 If you are looking for a "bar" that isn't preceded by a
	 "foo", "/(?!foo)bar/" will not do what you want.  That's
	 because the "(?!foo)" is just saying that the next thing
	 cannot be "foo"--and it's not, it's a "bar", so "foobar"
	 will match.  Use look-behind instead (see below).

Damit ist eine Suchbedingung möglich, die den Suchbegriff nicht enthält. Falls z.B. alle Zeilen gesucht werden sollen, die foobar nicht enthalten, dann lautet der Suchbegriff:

^((?!foobar).)*$

Ein Gedanke zu „Notepad++ – Suche nach Zeilen, die einen String nicht enthalten

  1. Daniel

    Hallo,
    ich versuche in Notepad++ deine oben genannter Syntax zu kombinieren.

    Folgendes sollte ich erreichen:
    Schritt 1:
    Suche mehrzeilig nach Blöcken die mit { starten und } enden.
    Inhalt muss sein "TableRelation=User"
    \{.*TableRelation=User([^\}]|\r\n)*\}
    (funktioniert soweit)

    Schritt 2:
    Inhalt muss sein "TableRelation=User"
    UND NICHT
    "TestTableRelation=No"

    krieg ich das irgendwie hin?

    Danke für deine Unterstützung.
    Gruß
    Daniel

Kommentare sind geschlossen.