2013-12-11 36 views
0

我試圖找到一種方法來將+100添加到所有這些整數,但我一直失敗悲慘。Perl Regular Expressions sum numbers up

我有這些線

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

我只是不能得到這個在一個良好的工作FASION。它從不增加100個整數,它只取代它們。有什麼事?這是不正確的使用正則表達式的方式,我必須使用其他方法?

$d1 += 100; 
$d2 += 100; 
$d3 += 100; 
$d4 += 100; 
$d5 += 100; 
$d6 += 100; 

s/<devio1="\d+" devio2="\d+" devio3="\d+" devio4="\d+" devio5="\d+" devio6="\d+"\/>/<devio1="$d1" devio2="$d3" devio3="$d4" devio4="$d5" devio5="$d6" devio1="$d7"\/>/g; 

回答

4

在一個健全的世界裏,strict開啓,這段代碼會產生一個編譯錯誤。

如果你不這樣做,它只會不做任何事情,因爲正則表達式不匹配你顯示的輸入。

如果在某種程度上匹配,它將放入輸出的值不可能與輸入中的值有任何關係。

也許你正在尋找的東西像

s/(?<=")(\d+)(?=")/$1 + 100/eg; 

這是解析看起來像XML的一個非常草率的方式,但無論如何會做加100來的雙引號之間的任何數字序列的一個好工作。