2012-08-15 14 views
30

Ho provato a utilizzare il Blocco note Ricerca/Sostituisci con un'espressione regolare per sostituire parole specifiche con versioni più brevi di tali parole.


ho usato la seguente espressione regolare per abbinare ogni parola che termina con er (ma non er come parola) - e sostituire le parole corrispondenti con le stesse parole meno il finale r, utilizzando un backreference:

Find what:([a-zA-z]+e)r

Replace with:$1

Ma non sostituisce le parole corrispondenti, anche se le trova.

Tuttavia, se cambio la sintassi backreference a questo:

Replace with:\1

tutto funziona bene.


Perché il backreference $1 non funziona?

Qual è la differenza tra le due forme di backrefernce - \1 e $1?

risposta

32

Le versioni precedenti di Notepad ++ (v5.9.8 e precedenti) supportavano solo le espressioni regolari standard POSIX. Tuttavia, piena PCRE (Perl Compatible Regular Expression) Ricerca/Sostituisci il supporto è stato aggiunto nella versione 6.0:

New features and enhancement in Notepad++ 6.0:

  • PCRE (Perl Compatible Regular Expressions) è supportato.

Questo significa che se si sta utilizzando v6.0 Notepad ++ o qualsiasi versione più recente (ad esempio v6.1.5), è possibile utilizzare la sintassi PCRE e utilizzare $1 invece di \1 per backreference, ma ha vinto essere compatibile con le versioni precedenti di Notepad ++ (precedente alla versione 6.0). Oltre a questo, sono simili.

Per ulteriori informazioni sulle differenze tra la sintassi del backreference e le ragioni del nuovo supporto della sintassi, vedere Backreferences syntax in replacement strings (why dollar sign?).

Un utile tutorial su come utilizzare le espressioni regolari in Notepad ++ può essere trovato here.

+3

@amiregelz Ho usato (e amorevolmente) Notepad ++ per molti anni, ma una delle maggiori frustrazioni che ho avuto è stata il suo scarso supporto Regex.Non posso credere di essere stato al buio con questi miglioramenti per DUE ANNI. Back-reference standard, asserzioni a larghezza zero: è bellissimo! Grazie per aver aperto i miei occhi! –

Problemi correlati