2013-06-30 7 views
44

Domanda veloce: ho un'espressione regolare, ^(?:\b[A-Z]+\b\s+)+(.*)\d{8}, che fornisce due gruppi di cattura. Vorrei sostituire il gruppo di acquisizione 1 con uno spazio bianco. È possibile?Sostituisci regexp capture-group in Notepad ++?

Se sostituisco con: \1 sostituisce TEST TESTER Hello, world. Another word here. 75793250 -> con Hello, world. Another word here. Voglio questo risultato: TEST TESTER 75793250. Sostituzione dello \1 con uno spazio bianco.

+3

Um, c'è solo un gruppo di cattura per quanto vedo ...? '(?: ...)' è un gruppo non catturante. – Jerry

+0

Pensavo avesse due, 0 e 1? Il gruppo 0 è la partita completa? In ogni caso vorrei sostituire il gruppo che Notepad ++ chiama 1 con uno spazio bianco. – Kaah

+0

Se sostituisco con: '\ 1' sostituisce' TEST TESTER Ciao, mondo. Un'altra parola qui. 75793250' -> con 'Hello, world. Un'altra parola qui. Voglio questo risultato: 'TEST TESTER 75793250'. Sostituendo '\ 1' con uno spazio bianco. – Kaah

risposta

74

utilizzare:

^((?:\b[A-Z]+\b\s+)+)(?:.*)(\d{8}) 

e sostituirlo con:

\1\2 
+0

Grazie, ha funzionato perfettamente! :) – Kaah

+1

@Kaah Prego! :) Inoltre, mi ha ricordato di aggiornare la mia versione del blocco note! Ho avuto 6.1.8 su xD – Jerry

7

Perché dovresti farlo.

farlo in questo modo

Regex: ^(\b[A-Z]+\b\s+)+(?:.*)(\d{8})

Sostituire con: \1 \2

+0

Grazie, ma che fornisce 'Espressione regolare non valida' in Notepad ++ 6.3.3. Per favore rivedi Anirudh. – Kaah

+1

@Kaah oops..corrected .. – Anirudha

+0

Questa regex restituirà 'TESTER 75793250' poiché l'acquisizione di un gruppo ripetuto ti fornirà solo l'ultima stringa corrispondente. Un altro esempio: sostituire la stringa 'abcd' con una regex' (.) + 'E una stringa di sostituzione' \ 1' risulterà nella stringa 'd' – steve9164