我知道以下三行代码旨在将字符串提取为$ value并将其存储在$ header中.但我不知道$value =~ s/^\s+//;和之间的区别是什么$value =~ s/\s+$//;.
$value =~ s/^\s+//;
$value =~ s/\s+$//;
$header[$i]= $value;
Zai*_*aid 12
如何从字符串的开头/结尾删除空格?
替换可以为您做到这一点.对于单行,您希望不使用任何内容替换所有前导或尾随空格.你可以用一对替换来做到这一点:
Run Code Online (Sandbox Code Playgroud)s/^\s+//; s/\s+$//;您也可以将其写为单个替换,尽管结果语句比单独的语句慢.不过,这对你来说无关紧要:
Run Code Online (Sandbox Code Playgroud)s/^\s+|\s+$//g;在此正则表达式中,交替匹配字符串的开头或结尾,因为锚点的优先级低于交替.使用该
/g标志,替换将使所有可能的匹配,因此它获得两者.请记住,尾随换行符匹配\s+,并且$锚点可以匹配字符串的绝对结尾,因此换行符也会消失.
要指定它应该匹配的位置,我们将使用锚元字符
^和$.锚^意味着在字符串的开头匹配,锚意味着在字符串$的末尾匹配,或者在字符串结尾的换行符之前.一些例子:Run Code Online (Sandbox Code Playgroud)"housekeeper" =~ /keeper/; # matches "housekeeper" =~ /^keeper/; # doesn't match "housekeeper" =~ /keeper$/; # matches "housekeeper\n" =~ /keeper$/; # matches "housekeeper" =~ /^housekeeper$/; # matches