也許這是一個愚蠢的問題,但:
我運行perl 5.8.8,我需要用「0」替換前面有數字的任何下劃線。替換正則表達式,與捕獲
運行:
$var =~s /(\d)_/$10/g;
顯然不爲$ 10個工作被解釋爲......好$ 10不「$ 1後跟0」
而且,作爲乳寧perl5.8,我不能這樣做
$var=~s/(?<n1>\d)\_/$+{n1}0/g;
有什麼想法嗎?
由於事先
也許這是一個愚蠢的問題,但:
我運行perl 5.8.8,我需要用「0」替換前面有數字的任何下劃線。替換正則表達式,與捕獲
運行:
$var =~s /(\d)_/$10/g;
顯然不爲$ 10個工作被解釋爲......好$ 10不「$ 1後跟0」
而且,作爲乳寧perl5.8,我不能這樣做
$var=~s/(?<n1>\d)\_/$+{n1}0/g;
有什麼想法嗎?
由於事先
就像在各種Unix shell中,可以在括號中爲消除歧義圍住變量名。
$var =~s /(\d)_/${1}0/g;
或者你可以使用一個向後看,以防止位被比賽的一部分:
$var =~s /(?<=\d)_/0/g;
另一種可能性是(不知道是否適用於perl的5.8.8)
s/\d\K_/0/
s/(?<=\d)_/0/
這也將是一個零寬度向後看斷言的好去處:
$var =~ s/(?<=\d)_/0/g;
它尋找一個數字,但實際上並沒有將數字sl到匹配的文本中。
這也適用。謝謝。 – benzebuth 2010-08-25 13:34:18
這就是它。非常感謝 ! – benzebuth 2010-08-25 13:29:36