Regular Expressions
Ripristina corrispondenza: \ K
Ricerca…
Osservazioni
Regex101 definisce la funzionalità \ K come:
\K
reimposta il punto iniziale della corrispondenza riportata. Tutti i personaggi consumati in precedenza non sono più inclusi nella partita finale
La sequenza di escape \K
è supportata da diversi motori, linguaggi o strumenti, come ad esempio:
- boost (dal ???)
- grep -P ← usa PCRE
- Oniguruma ( dal 5.13.3 )
- PCRE ( dal 7.2 )
- Perl ( dal 5.10.0 )
- PHP ( dal 5.2.4 )
- Ruby (dalla 2.0.0)
... e (finora) non supportato da:
Cerca e sostituisci usando l'operatore \ K
Dato il testo:
foo: bar
Vorrei sostituire qualsiasi cosa seguendo "foo:" con "baz", ma voglio mantenere "foo:". Questo potrebbe essere fatto con un gruppo di cattura come questo:
s/(foo: ).*/$1baz/
Quale risulta nel testo:
pippo: baz
oppure potremmo usare \K
, che "dimentica" tutto ciò che ha precedentemente abbinato, con uno schema come questo:
s/foo: \K.*/baz/
L'espressione regolare corrisponde a "pippo:" e poi incontra il \K
, i caratteri di corrispondenza precedenti sono dati per scontati e lasciati dalla regex, il che significa che solo la stringa corrispondente a .*
sarà sostituita da "baz", dando come risultato il testo:
pippo: baz