2013-12-10 28 views
5

Tüm bu sayılara nasıl belirli bir değer ekleyebilir veya ekleyebilirim? Mesela amacım "" içindeki tüm sayıları 100 ile arttırmak, ancak problemli olmaktır. Temel olarak, sadece bir sayı +100 ile mevcut sayıyı bir şekilde.Notepad ++ Normal İfade ekle sayıları

ben "" ama bir yolunu bulamıyorum içimde tüm sayıları bulabilirsiniz

<devio1="([0-9]+)" devio2="([0-9]+)" devio3="([0-9]+)" devio4="([0-9]+)"/> 

Notepad ++ ile bu normal ifadeyi kullanarak

<devio1="875" devio2="7779" devio3="5635" devio4="154"/> 
<devio1="765" devio2="74779" devio3="31535" devio4="544"/> 
<devio1="4335" devio2="13" devio3="55635" devio4="1565"/> 

aşağıdaki satırları +100 eklemek zorunda hepsine. Bu görev, Normal İfadeler kullanılarak Notepad ++ ile yapılabilir mi?

+1

Sorunuza gerçekten bir cevap değil, yalnızca sorununuza: Perl'i kullanmayı düşünebilirsiniz. – Peter

+2

Düzenli ifadeler dize manipülasyonu içindir, gerçekten matematik yapmak için uygun değildir. –

+0

Bunu yalnızca normal ifadeyle kullanamazsınız, geri aramanıza gerek duyarsınız. Notepad ++ için kendi eklentinizi ya da sadece favori dilinizi kullanın. – HamZa

cevap

0

Regex, aritmentiği desteklemiyor ve Notepad ++, regex'in ötesindeki herhangi bir bilgiyi desteklemiyor, bu nedenle kendinizi bu araca sınırlıyorsanız takıldınız demektir. Tabii ki, birçoğu Math operations in regex'da tartışılan Not Defteri'nde olmayan pek çok çözüm var.

3

Notepad ++ 'a çok aşina değilim ama bir algoritma için, bir sayı abcd = a * 1000 + b * 100 + c * 10 + d olduğunu varsayalım, sonra b [0,8]' de olduğu sürece b'yi b + 1 ile değiştirebilirsiniz. B = 9'a gelince, b'yi 0 ile değiştirmeli ve a + 1 ile değiştirmelisiniz (eğer a = 9 ise 10 ile değiştireceksiniz).

ardından, üç ve dört basamaklı sayılar için, diyelim ki, şu Regexes geçerli olabilir, bu kaydeden: Ayrıca herhangi a = 9 düşünmek zorundayız dikkat çeken ... vb

\([1-9]+\)0\([0-9]{2}\) -> \1 1\2, 
\([1-9]+\)1\([0,9]{2}\) -> \1 2\2, 
... -> , 
\([1-9]+\)8\([0-9]{2}\) -> \1 9\2, 

ve b = 9 tam sayı ve daha büyük tamsayılar; Bu, 10^x (x> = 2) katsayılarının 9'a eşit olduğu durumları kapsayan ifadeler ile bir çeşit tekrarlama yapılmasını önerir. Aslında bunu kodlamaya başladığınızda (ya da el ile yaptığınızda) bunu gerçekleştirmeye başlayacaksınız. Bu saf regex yaklaşımı ile acı verici olacak.

8

Bu, Notepad ++ 'da normal ifadelerin kullanılmasıyla mümkün değildir. Maalesef yeni modelde hesaplamaları gerçekleştirmenin bir yolu yok.

Notepad ++ içindeki görevinizi gerçekleştirmenin tek yolu, Python Script eklentisinin kullanılmasıdır.

  1. Python Script eklenti Plugin Manager veya official website yükle. Sonra Plugins>Python Script>New Script adresine gidin. Yeni dosya için bir dosya adı seçin (örneğin add_numbers.py) ve aşağıdaki kodu kopyalayın:

    def calculate(match): 
        return 'devio%s="%s"' % (match.group(1), str(int(match.group(2))+100)) 
    
    editor.rereplace('devio([0-9])="([0-9]+)"', calculate) 
    
  2. Çalıştır Plugins>Python Script>Scripts>add_numbers.py ve metin dönüştürülecektir:

    <devio1="975" devio2="7879" devio3="5735" devio4="254"/> 
    <devio1="865" devio2="74879" devio3="31635" devio4="644"/> 
    <devio1="4435" devio2="113" devio3="55735" devio4="1665"/> 
    
+0

Teşekkürler dostum. Sen gerçek mvp'sin! ^^ – Korbi