Warum erzeugt die Aufspaltung von '(?! ^)' und '(?! ^)' die gleiche Antwort?

8

Die folgenden zwei Codezeilen:

%Vor%

erzeugen jeweils die gleiche Ausgabe:

%Vor%

Ich habe erwartet, dass das Endergebnis

produziert %Vor%

da es bereit sein sollte, nach dem ^ und vor dem t zu teilen. Kann jemand darauf hinweisen, wo mein Denken falsch ist?

    
Keppil 21.10.2013, 20:13
quelle

1 Antwort

7

(?!^) stimmt mit jeder Position überein, die nicht am Anfang der Zeichenfolge steht, genauso wie (?<!^) . Da der ^ -Anker keine Länge hat, ist es egal, ob Sie vorwärts oder rückwärts schauen.

Stellen Sie sich die Zeichenfolge test vor, wobei | die Positionen zwischen Zeichen angibt:

%Vor%

(?!^) stimmt nicht mit der Position 0 überein, da die Regex-Engine den Anfang der Zeichenfolge von hier aus "sieht", wenn sie um 0 Zeichen nach vorne schaut

(?<!^) stimmt hier auch nicht überein, weil die Regex-Engine den Anfang der Zeichenfolge von hier "sieht", wenn sie um 0 Zeichen nach hinten schaut

    
Tim Pietzcker 21.10.2013, 20:17
quelle

Tags und Links