2011-03-03 167 views

risposta

84

Ricerca:

^[#;].* 

Sostituire con niente. ^ indica l'inizio di una riga, la classe di [#;] corrisponde a # o ; e .* corrisponde a qualsiasi altro elemento della linea.

Nelle versioni di Notepad ++ precedenti alla 6.0, non sarà possibile rimuovere effettivamente le righe a causa di una limitazione nel suo motore regex; la sostituzione produce righe vuote per ogni riga abbinata. In altre parole, questa:

 
# foo 
; bar 
statement; 

si trasformerà in:

 


statement; 

Tuttavia, la sostituzione lavorerà in Notepad ++ 6.0 se si aggiunge \r, \n o \r\n alla fine del pattern, a seconda che fine riga il file sta usando, con conseguente:

 
statement; 
+9

È possibile sostituire le righe vuote utilizzando la modalità di ricerca "Esteso" e trovare \ r \ n \ r \ n. Se lasci vuoto "sostituisci con", rimuoverai le righe vuote. Fai attenzione, poiché rimuoverà altre righe vuote che non sono state create dalla tua prima sostituzione. – PaulF

+4

A partire dal blocco note ++ 6, con il supporto di regex completo PCRE, la ricerca di^(# |;). * \ R \ n e la sostituzione con vuoto (con l'opzione regex abilitata ovviamente) funziona perfettamente – Tao

+0

@Tao: Grazie per il promemoria - Ho dimenticato di aggiornare tutte le mie risposte Notepad ++ con il supporto 6.0! Ci arriverò presto ... – BoltClock

2

Forse si dovrebbe provare

^[#;].*$ 

^ corrisponde all'inizio, $ alla fine.

+0

Non funzionerà, [vedi scintilla] (http://www.scintilla.org/SciTERegEx.html). I caratteri di fine riga vengono eliminati. – stema

5

È possibile, ma non direttamente.

In breve, andare alla ricerca, utilizzare la regex, controllare "linea di riferimento" e fare clic su "Trova tutti". Risulta in segnalibri per tutte quelle linee.

Nel menu di ricerca c'è un punto "cancella linee segnalibro" voilà.

ho trovato la risposta qui (la risposta corretta è la seconda, non il accettato!): How to delete specific lines on Notepad++?

+0

+1 per il collegamento –

5

Come altri hanno notato, in Notepad ++ 6.0 e versioni successive, è possibile utilizzare la funzione "Sostituisci" funzione per eliminare tutte le righe che iniziano con ";" o "#".

Tao fornisce un'espressione regolare che funge da punto di partenza, ma non tiene conto dello spazio bianco che può esistere prima del ";" o "#" carattere su una determinata linea. Ad esempio, le righe che iniziano con ";" o "#" ma sono "tabbed-in" non saranno cancellati quando si utilizza l'espressione regolare di Tao, ^(#|;).*\r\n.

L'espressione regolare di Tao non tiene conto dell'errore menzionato nella risposta di BoltClock: varianze nei caratteri di nuova riga tra i sistemi.

Un miglioramento è quello di utilizzare ^(\s)*(#|;).*(\r\n|\r|\n)?, che rappresenta lo spazio bianco iniziale e le variazioni di carattere di nuova riga. Inoltre, il trailing ? gestisce i casi in cui l'ultima riga del file inizia con # o ;, ma non termina con una nuova riga.

Per i curiosi, è possibile distinguere quale tipo di carattere di fine riga viene utilizzato in un determinato documento (e più di un tipo può essere utilizzato): Visualizza -> Mostra simbolo -> Mostra fine riga.

+0

L'espressione regolare suggerita sembra non riuscire a individuare l'ultima riga del documento (se è una riga pertinente). – maja

+1

Bella cattura, @maja! Prova ad aggiungere un '?' Alla fine, in questo modo: '^ (\ s) * (# |;). * (\ R \ n | \ r | \ n)?'. Aggiornerò di conseguenza la risposta originale. Grazie! –

-1

In Notepad ++, è possibile utilizzare la scheda Segna nella finestra di dialogo Trova per contrassegnare tutte le righe corrispondenti alla query che possono essere espressioni regolari o normali (carattere jolly).

Quindi utilizzare Cerca> Segnalibro> Rimuovi righe segnalibro.

+0

La stessa risposta è già stata scritta da ** stema ** ma la tua risposta qui ha molto meno informazioni. Anche se aggiungere nuove risposte a vecchie domande può essere utile, sono utili solo se forniscono nuove informazioni. Le risposte che ripetono solo altre risposte non hanno valore, sono solo confusione. – AdrianHHH

Problemi correlati