2012-12-19 46 views
1

我試圖在perl中實現替換。 我有一個二進制矩陣和我想和2.perl只能查找和替換完全匹配

所以就用下面的行

s/1/2/g foreach @remaining; 

但是用1

1取代

0 ,這個命令最終取代了我的列名以及其中包含數字的列名。它轉換,例如,1234至2234

我希望它匹配和替換隻有1秒,而不是1234

+0

也許你應該說一些關於你的資料,除了它是一個二元矩陣,例如,它被保存在一個純文本文件,標籤/逗號分隔等 – TLP

回答

6

使用單詞邊界,如:

s/\b1\b/2/g foreach @remaining; 

要在替換0和1同時:

s/\b([01])\b/1+$1/eg foreach @remaining; 
+0

感謝M42。這是工作。你能否也請向我解釋它是如何工作的? \ b的功能是什麼?對於第一個使用\ b1和第二個\ b/2。他們爲什麼不同? – user1007742

+1

@ user1007742'\ b1'和'\ b2' ...不,它們不存在。 :)轉義序列是'\ b',數字只是數字。 '\ b'字邊界是一個零寬度的斷言,斷言它的位置是一個單詞字符和一個非單詞字符之間的邊界。 – TLP

+0

@TLP謝謝,我想我知道了\ bword \ b是完全匹配。謝謝 – user1007742