Soru Notepad ++ Aynı metin ve eklenen karakter için normal ifadeyi değiştir


Metin ve sayıları 5 olan bir dosyam var (ör. 12000, 11153, vb.). Bu sayıların tümünü bir 0. Yani 11153 olur 111530. Bu, Not Defteri'nde ++ kullanılabilir mi?

Aşağıdaki sayılarla tüm sayıları bulabildiğimi biliyorum: [0-9]{5}ama bunları aynı sayı ile nasıl değiştirebilirim? 0?

Yedek kutuda aşağıdakileri denedim:

  • [0-9]{5}0 - kelimenin tam anlamıyla 11153 ile değiştirildi [0-9]{5}0
  • \10  - Bir yerde okudum. \1 maçı alacaktı, ama işe yaramıyor. Bu yerini alacak 11153 ile 0
  • DÜZENLE: \00 - Buna dayanarak Cevap Görüyorum ki kullanmam gerek \0 yerine \1. Yine de çalışmıyor. Bu yerini alacak 11153 ile

Yani, ben yakın olduğumu hissediyorum \1 veya \0ama yeterince yakın değil.


32
2018-03-14 09:07


Menşei


^[0-9]{5}$ (veya \b[0-9]{5}\b) -> ${0}0 - Wiktor Stribiżew


Cevaplar:


Cevaplara çok yakınsınız! Kaçırdığınız şey bir yakalama grubudur.

Bu ifadeyi "Bul ne" bölümünde kullanın:

([0-9]{5})

"Şununla değiştir" bölümünde şunu kullanın:

\10

( ve ) Bir yakalama grubunu temsil eder. Bu, aslında, numaranızı yakaladığınız ve daha sonra sıfır ile değiştirdiğiniz anlamına gelir.


50
2018-03-14 09:11



Hiç yakalanmanıza gerek yok, tüm OP ihtiyaçları bir \d{5} (veya \b\d{5}\bveya ^\d{5}$) -> ${0}0Perl benzeri geri tepme ile tanımlanan bir 0 grubu kullanın. POSIX stili geri izlemenin kullanılması, bir yakalama grubunun kullanılmasını gerektirir, true (POSIX geri referansları 1 için 9, Böylece \10 asla 10. gruba verilen geri dönüş ile karıştırılmaz). - Wiktor Stribiżew
Benim durumumda son ihtiyacım yok 0 arasında \10. Sadece yakalama grubunu braketle kullanıyorum ve kullanıyorum \1 yakalama grubu metnini değiştirmek için arama yakalama grubu olarak değiştirilmesinin bir sonucu olarak. - Natta Wang


Çok yakınsın İntikamınıza parantez içine alarak bir yakalama grubu eklemeniz gerekir. ([0-9]{5})

Sonra kullan \10 yedek olarak. Bu, eşleşmeyi grup 1'den gelen metinle değiştirip ardından sıfırdır.


3
2018-03-14 09:12



Sorun değil. Sadece yeterince hızlı değilim :). Çözüme sahip olduğuna sevindim - roblovelock


Kullanabilirsiniz \K sıfırlamak.

\b\d{5}\b\K

Ve ile değiştirin 0

Regex101 adresindeki demoya bakın


2
2018-03-14 09:11



Belki de Notepad ++ 'da bir hata, ancak regex'inizi kullandığımda ve Find Next'i kullandığımda, tüm sayıları buluyorum, ancak yerine tıkladığımda 00 değil - Kevin Cruijssen
@KevinCruijssen: Sadece kontrol edildi, sıfırlar eklendi (v.6.9). - Wiktor Stribiżew
@KevinCruijssen Ben çalıştığı np ++ v6.8.8 ile test ettim:) - bobble bubble
Hepsini Değiştir'i kullandığımda gerçekten çalışır, ancak Sonraki'yi Bul + Değiştir'i kullandığımda (Notepad ++ v6.9). Ah, neyse, her şeyi değiştirmem gerekiyor, yani +1 de. Kabul ediyorum HappyCoderYine de cevabı. Her zaman olduğu gibi, regex ile aynı sorunu çözmek için birçok farklı yol vardır. - Kevin Cruijssen
@KevinCruijssen iyi, size hangi cevabı tercih ederim:) benim np ++ 'da “sonraki sonraki” çalışmalarında (sıfır uzunluk eşleştiği gibi) çalışır. - bobble bubble