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:

... och (hittills) stöds inte av:

  • .NETTO
  • awk
  • våldsamt slag
  • GNU
  • ICU
  • Java
  • Javascript
  • anteckningsblock ++
  • Objective-C
  • POSIX
  • Pytonorm
  • Qt / QRegExp
  • sed
  • tcl
  • vim
  • XML
  • XPath

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

Exempel 1

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

Exempel 2



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow