Regular Expressions
Matchåterställning: \ K
Sök…
Anmärkningar
Regex101 definierar \ K-funktionalitet som:
\K
återställer startpunkten för den rapporterade matchen. Alla tidigare konsumerade tecken ingår inte längre i den slutliga matchen
Escape-sekvensen \K
stöds av flera motorer, språk eller verktyg, till exempel:
- boost (sedan ???)
- grep -P ← använder PCRE
- Oniguruma ( sedan 5.13.3 )
- PCRE ( sedan 7.2 )
- Perl ( sedan 5.10.0 )
- PHP ( sedan 5.2.4 )
- Ruby (sedan 2.0.0)
... och (hittills) stöds inte av:
Sök och byt ut med \ K-operatören
Med texten:
Foo bar
Jag skulle vilja ersätta allt efter "foo:" med "baz", men jag vill behålla "foo:". Detta kan göras med en fångargrupp som denna:
s/(foo: ).*/$1baz/
Vilket resulterar i texten:
foo: baz
eller vi kan använda \K
, som "glömmer" allt det som tidigare har matchats, med ett mönster som detta:
s/foo: \K.*/baz/
Regex matchar "foo:" och möter sedan \K
, de tidigare matchade tecknen tas för givet och lämnas av regex vilket betyder att endast strängen matchad av .*
Kommer att ersättas med "baz", vilket resulterar i texten:
foo: baz