2012-08-15 6 views
30

.

: Bir geribaşvuru kullanarak ve aynı kelime eksi biten r ile eşleşen kelimeleri değiştirmek -

I (bir kelime olarak değil er) er ile biter her kelimeyi eşleştirmek için aşağıdaki normal ifade kullanılır

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

Replace with:$1

Ancak eşleşen sözcükleri, onları bulsa da değiştirmez. Bunun için geribaşvuru sözdizimi değiştirirseniz

Ancak:

Replace with:\1

Her şey iyi çalışır.


Neden $1 geribaşvuru çalışır?

Backrefernce - \1 ve $1 iki biçimi arasındaki fark nedir?

cevap

32

Notepad ++ 'ın daha önceki sürümleri (v5.9.8 ve önceki) yalnızca standart POSIX Düzenli İfadeler destekledi. Ancak, tam PCRE (Perl Uyumlu Normal İfade) Arama/destek değiştirin sürüm 6.0 eklendi:

New features and enhancement in Notepad++ 6.0:

  • PCRE (Perl Uyumlu Normal İfadeler) desteklenir.

Bu size (örn v6.1.5) Notepad ++ v6.0 veya herhangi yeni bir sürümü kullanıyorsanız, sen PCRE sözdizimini kullanın ve geribaşvuru için $1 yerine \1 kullanmak anlamına gelir, ancak kazandı 't Defteri'nde önceki sürümlerinde ++ (6.0 sürümünden önceki) ile uyumlu olacak. Bunun dışında benzerler.

geribaşvuru sözdizimi ve yeni sözdizimi desteği arkasında nedenlerden arasındaki farklar hakkında daha fazla bilgi için Backreferences syntax in replacement strings (why dollar sign?) bkz.

++ Notepad normal ifadeler kullanma konusunda yararlı bir öğretici

here bulunabilir.

+3

Yıllardır ++ Not Defteri'ni kullanarak (ve sevgi dolu) oldum @amiregelz ama onunla yaşadığınız en büyük hayal kırıklıklarından biri zayıf Regex destek olmuştur.İKİ YIL İÇİN bu geliştirmelerde karanlıkta olduğuma inanamıyorum. Standart geri referanslar, sıfır genişlikli iddialar - çok güzel! Gözlerimi açtığın için teşekkürler! –

İlgili konular