2016-03-14 16 views
24

Ho un file con testo e numeri con una lunghezza di 5 (ad esempio 12000, 11153, ecc.). Voglio aggiungere tutti questi numeri con un 0. Quindi 11153 diventa 111530. È possibile in Notepad ++?Blocco note ++ Sostituire la corrispondenza regolare per lo stesso testo più il carattere accodamento

So che posso trovare tutti i numeri con la seguente espressione regolare: [0-9]{5}, ma come posso sostituirli con lo stesso numero, oltre ad un 0 accodamento?

Nella casella di sostituzione ho provato le seguenti cose:

  • [0-9]{5}0 - cui ha preso alla lettera, così 11153 è stato sostituito con [0-9]{5}0
  • \10 - Ho letto da qualche parte che \1 avrebbe preso la partita, ma non sembra funzionare. Questo sostituirà 11153 con 0
  • EDIT: \00 - Sulla base di questo SO answer vedo ho bisogno di usare \0 invece di \1. Tuttavia non funziona ancora. Questo sostituirà 11153 con

Così, ho avuto la sensazione sono vicino con la \1 o \0, ma non abbastanza vicino.

+0

'^ [0-9] {5} $' (o '\ b [0-9] {5} \ b') ->' $ {0} 0' –

risposta

42

Sei molto vicino alla risposta! Quello che ti sei perso è un gruppo che cattura.

Usare questa espressione regolare in "Trova" sezione:

([0-9]{5})

In "Sostituisci con", utilizzare questo:

\10

Il ( e ) rappresentano un gruppo di cattura. Ciò significa essenzialmente che acquisisci il tuo numero e quindi lo sostituisci con lo stesso seguito da uno zero.

+1

Non hai bisogno di catturare affatto, tutti i bisogni dell'OP sono un '\ d {5}' (o '\ b \ d {5} \ b', o'^\ d {5} $ ') -> '$ {0} 0', usa solo un gruppo 0 definito con il riferimento di Perl. L'uso del backreference in stile POSIX richiede l'uso di un gruppo di cattura, true (dato che le backreferenze POSIX iniziano da '1' a' 9', quindi '\ 10' non viene mai scambiato per il riferimento al 10 ° gruppo). –

2

È possibile utilizzare \K to reset.

\b\d{5}\b\K 

e sostituirlo con 0

See demo at regex101

+0

Forse è un bug in Notepad ++, ma quando uso la regex e utilizzo Trova dopo trova tutti i numeri, ma quando faccio clic su Sostituisci con '0', non aggiunge lo 0 .. –

+0

@KevinCruijssen: Appena spuntato, vengono aggiunti gli zeri (v. 6.9). –

+0

@KevinCruijssen L'ho provato con il mio np ++ v6.8.8 dove ha funzionato:) –

3

Sei molto vicino. Devi aggiungere un gruppo di cattura alla tua espressione regolare circondandola con parentesi. ([0-9]{5})

Quindi utilizzare \10 come ricambio. Sostituisce la corrispondenza con il testo del gruppo 1 seguito da uno zero.

+0

Nessun problema. Non sono abbastanza veloce :). Sono contento che tu abbia la soluzione – roblovelock

Problemi correlati