我知道以下三行代碼旨在將字符串提取到$ value並將其存儲在$ header中。但我不知道$value =~ s/^\s+//;
和$value =~ s/\s+$//;
之間有什麼區別。
$value =~ s/^\s+//;
$value =~ s/\s+$//;
$header[$i]= $value;
我知道以下三行代碼旨在將字符串提取到$ value並將其存儲在$ header中。但我不知道$value =~ s/^\s+//;
和$value =~ s/\s+$//;
之間有什麼區別。
$value =~ s/^\s+//;
$value =~ s/\s+$//;
$header[$i]= $value;
如何從一個字符串的開始/結束剝離空白?
一個替代可以爲你做這個。對於單行,您想要 全部替換所有前導或尾隨空白。您可以 做與對取代的:
s/^\s+//; s/\s+$//;
你也可以寫,作爲一個單獨置換,但事實證明 出來的合併報表比單獨的慢一些。這 也許不事給你,但:
s/^\s+|\s+$//g;
在這個正則表達式,交替在 開頭或字符串的結尾匹配要麼自錨具有比交替較低 優先級。使用
/g
標誌,替換 會進行所有可能的匹配,因此它將同時獲得。請記住,尾隨的 換行符與\s+
匹配,並且$
錨可以匹配到字符串絕對末尾的 ,因此換行符也消失。
要指定它應該匹配,我們將使用錨 元字符
^
和$
。錨點^
表示匹配字符串的起始位置 ,錨點$
表示匹配字符串末尾的 ,或匹配字符串末尾的換行符。一些 例子:"housekeeper" =~ /keeper/; # matches "housekeeper" =~ /^keeper/; # doesn't match "housekeeper" =~ /keeper$/; # matches "housekeeper\n" =~ /keeper$/; # matches "housekeeper" =~ /^housekeeper$/; # matches
第一個只會替換行首的空格。
「我知道下面三行代碼的目的是提取字符串到$值,並將其存儲在$頭」 ...只是備案,他們沒有。他們的目標是從標量$ value的末尾去掉空白,並將它放在數組@header的$ i-th元素中。 – AmbroseChapel 2012-02-14 09:33:41