Assertions

Mit Assertions (engl. to assert ⇒ behaupten) läßt sich festlegen, dass vor oder hinter einem Ausdruck etwas stehen muß. Die einfachen Assertions wie ^, $ oder \b wurden bereits in einem vorherigen Kapitel beschrieben. In diesem Kapitel werden die komplexeren Assertions behandelt, welche immer als Unterausdruck angegeben werden.

Dabei werden zwei Arten von Assertions unterschieden:

Zu beachten ist, dass die eigentliche Assertion nie Teil des gefundenen Treffers ist. Sucht man also zum Beispiel nach einem Wort, das von einem Punkt gefolgt wird, so würde als Treffer immer nur das eventuelle gefundene Wort zurückgeliefert werden, der folgende Punkt würde nicht dazu gehören. Somit kann man auf Assertions selbst auch keine Quantifier anwenden.

Lookbehind-Assertions

... (?<= positiv, (?<! negativ ...

Positive Lookbehind-Assertions

... (?<=behauptung) ...

Negative Lookbehind-Assertions

... (?<!behauptung) ...

Lookahead-Assertions

Lookahead-Assertions beginnen immer mit (?=, wenn es sich um eine positive Assertions handelt (also eine, die behauptet, dass etwas vorhanden sein soll) bzw. mit (?!, falls es sich um eine negative Assertion handelt (also eine, die behauptet, etwas sei nicht vorhanden).

Positive Lookahead-Assertions

Positive Lookahead-Assertions werden durch (?=behauptung) ausgedrückt. Als Behauptung kann ein beliebiger gültiger Regulärer Ausdruck angegeben werden.

Positive Lookahead-Assertions behaupten immer, dass ein Ausdruck von etwas gefolgt werden muss. Der Ausdruck #\d+(?=\.)# trifft auf eine beliebig lange Zahl zu, die von einem Punkt gefolgt wird, der Punkt selbst ist aber nicht Teil des Treffers.

Negative Lookahead-Assertions

Negative Lookahead-Assertions legen fest, dass ein Ausdruck nicht von etwas gefolgt wird. Die Syntax lautet hier (?!behauptung). Die Behauptung muss wiederum ein gültiger Regulärer Ausdruck sein.

Analog zum vorherigen Beispiel lässt sich mit diesem Ausdruck #\d+(?!\.)# eine Zahl finden, die nicht von einem Punkt gefolgt wird.

Verwandte Themen
Kapitelnavigation