Regular Expressions
Match zurücksetzen: \ K
Suche…
Bemerkungen
Regex101 definiert \ K-Funktionalität als:
\K
setzt den Startpunkt des gemeldeten Matches zurück. Alle zuvor verbrauchten Charaktere werden nicht mehr in das endgültige Spiel aufgenommen
Die \K
Escape-Sequenz wird von mehreren Engines, Sprachen oder Tools unterstützt, z.
- Boost (seit ???)
- grep -P ← verwendet PCRE
- Oniguruma ( seit 5.13.3 )
- PCRE ( seit 7.2 )
- Perl ( seit 5.10.0 )
- PHP ( seit 5.2.4 )
- Ruby (seit 2.0.0)
... und (bisher) nicht unterstützt von:
Suchen und Ersetzen mit \ K-Operator
In Anbetracht des Textes:
Foo: Bar
Ich möchte alles, was "foo:" folgt, durch "baz" ersetzen, aber ich möchte "foo:" behalten. Dies könnte mit einer Capturing-Gruppe wie folgt durchgeführt werden:
s/(foo: ).*/$1baz/
Welche Ergebnisse ergeben sich aus dem Text:
foo: baz
oder wir könnten \K
, was alles, was zuvor abgeglichen wurde, mit einem Muster wie folgt "vergisst":
s/foo: \K.*/baz/
Der reguläre Ausdruck stimmt mit "foo:" überein und trifft dann auf \K
Die zuvor übereinstimmenden Zeichen werden als selbstverständlich betrachtet und vom regulären Ausdruck zurückgelassen. Dies bedeutet, dass nur die mit .*
Übereinstimmende Zeichenfolge durch "baz" ersetzt wird.
foo: baz