Tüm dizeleri Notepad ++ 'daki her dizede bulunan sayılarla nasıl değiştirebilirim?


108

Aşağıdaki modelle tüm değerleri bulmaya çalışıyorum:

value="4"
value="403"
value="200"
value="201"
value="116"
value="15"

ve kapsamların içindeki değerle değiştirin.

Kalıbı bulmak için aşağıdaki normal ifadeyi kullanıyorum:

.*"\d+"

Nasıl değiştirebilirim?


2
Yedek parça nedir? Bir örnek verebilir misiniz?
Toto

^. * değer = "([^"] *) ". * $ bu normal ifadeyi kontrol edin ve \ 1 değerini değerin gerektiği yerde yeniden yazın
Nikhil KS

Yanıtlar:


191

Değiştirmek için Notepad ++ ' da Değiştir menüsünü açmak için Ctrl+ Htuşuna basın.

Daha sonra, "Normal ifade" düğmesini işaretlerseniz ve yerine koyduğunuzda eşleme modelinizin bir bölümünü kullanmasını isterseniz, "yakalama grupları" nı kullanmanız gerekir ( google'da daha fazlasını okuyun ). Örneğin, aşağıdaki satırların her birini eşleştirmek istediğinizi varsayalım

value="4"
value="403"
value="200"
value="201"
value="116"
value="15"

.*"\d+"kalıbı kullanarak ve sadece numarayı saklamak istiyor. Daha sonra parantez kullanarak, eşleme düzende bir yakalama grubunu kullanabilirsiniz (ve )bunun gibi,: .*"(\d+)". Yani şimdi yerine koyduğunuzda sadece $11 $ 'ın 1. yakalama grubunun değerine atıfta bulunduğu ve her başarılı eşleşme için numarayı döndüreceğini yazabilirsiniz . İki yakalama grupları olsaydı, örneğin (.*)="(\d+)", $1dize döndürür valueve $2sayısını döndürür.

Yani şunu kullanarak:

bul: .*"(\d+)"

Değiştir: $1

Sana geri dönecek

4
403
200
201
116
15

Lütfen yukarıda belirtilen kalıbı eşleştirmenin birçok alternatif ve daha iyi yolu olduğunu unutmayın. Örneğin desen value="([0-9]+)"daha spesifik olduğu için daha iyi olur ve sadece bu çizgilerle eşleşeceğinden emin olursunuz. Yakalama grupları kullanmadan değiştirme yapmak bile mümkündür, ancak bu biraz daha ileri bir konu, bu yüzden şimdilik bırakacağım :)


19
Değiştirmek $1için benim için çalışmadı. Onun \1yerine kullandım ve işe yaradı.
Jason Wheeler

12
\1Notepad ++ 'ın tüm sürümlerinde çalışır. $1sadece yeni olanlarda çalışır.
Cullub

Bunun Hex Editoreklenti ile çalışmadığını tahmin ediyorum . Onaltılık görünüm modunda Notepad ++, Regular ExpressionAra / Değiştir seçeneğini göstermez . Metin görünümü modunda Regular ExpressionAra / Değiştir seçeneğini görüyorum . Şu anda güncel sürüm olan Notepad ++ Sürüm 6.9.2'yi kullanıyorum.
Kevin Fegan

15

psxls harika bir cevap verdi ancak Notepad ++ sürümümün biraz farklı olduğunu düşünüyorum, bu yüzden $ (dolar işareti) yakalama işe yaramadı.

Ben Notepad ++ v.5.9.3 ve burada size görevi yerine edebilirsiniz:

Şu kalıbı arayın: value = \ "([0-9] *) \" Ve şununla değiştirin: \ 1 (bu yakalama grubu etrafında ne yapmak isterseniz)

Ör. Köşeli parantezlerle çevreleyin

[\ 1] -> değer üretecek = "[4]"


1
\1Numarayı korumama ama arkasındaki alıntıyı kaldırmama yardım etti. Benzeri bir belgede yaklaşık 7400 satırım vardı tablename.columnname = '12345'. İlk alıntının kaldırılması kolaydı, ikincisi ise \1değiştir metin kutusundaki seninki kullanılarak yapıldı. Teşekkürler, +1
Ben Fransen

6

değiştirmek (.*")\d+(")

İle $1x$2

x"Kapsamlar içindeki değeriniz" nerede ?


0

Ben Notepad ++ v6.8.8

Bulun : [([a-zA-Z])]

Değiştir : [\ '\ 1 \']

Oluşturacak: $ array [XYZ] => $ array ['XYZ']


-3

bul: value="([\d]+|[\d])"

Değiştir: \1

Gerçekten sana geri dönecek

4
403
200
201
116
15

js:

a='value="4"\nvalue="403"\nvalue="200"\nvalue="201"\nvalue="116"\nvalue="15"';
a = a.replace(/value="([\d]+|[\d])"/g, '$1');
console.log(a);

3
Bu JavaScript çözümünün Notepad ++ ile etiketlenen soruyla nasıl bir ilişkisi var?
Jason Aller

Hatalı, bozuk yanıtlar 1 ve 2, Notepad ++ ile etiketlenen soruyla nasıl ilişkilendirilebilir?
user3178007

Neden soruyu burada sordum? Çünkü soru yaratamıyorum. Çünkü yeterli itibar puanım yok.
user3178007

1
İddia ettiğiniz gibi soru sormak için böyle bir itibar şartı yoktur - muhtemelen kısıtlanmış olamazsınız . Tekrar deneyin: stackoverflow.com/questions/ask
BoltClock

Soru soruldu. stackoverflow.com/questions/24112018/… Ancak aranacak sözcüklerle sınırlıdır. Sınırlama!
user3178007
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.