Regex 在Perl中,s/^\s+;//之间有什么区别和s/\s+;$/?
我知道下面三行代码的目的是将字符串提取为$value并存储在$header中。但是我不知道Regex 在Perl中,s/^\s+;//之间有什么区别和s/\s+;$/?,regex,perl,Regex,Perl,我知道下面三行代码的目的是将字符串提取为$value并存储在$header中。但是我不知道$value=~s/^\s+/和$value=~s/\s+$/ $value =~ s/^\s+//; $value =~ s/\s+$//; $header[$i]= $value; ^means以$means开头,以该字符串结尾。第一个将只替换行开头的空格。来自: 如何从字符串的开头/结尾删除空格? 替代品可以帮你做到这一点。对于一行,您希望 将所有前导或尾随空格替换为零。你可以 通过一对替换来实现这
$value=~s/^\s+/
和$value=~s/\s+$/代码>
$value =~ s/^\s+//;
$value =~ s/\s+$//;
$header[$i]= $value;
^means以$means开头,以该字符串结尾。第一个将只替换行开头的空格。来自:
如何从字符串的开头/结尾删除空格?
替代品可以帮你做到这一点。对于一行,您希望
将所有前导或尾随空格替换为零。你可以
通过一对替换来实现这一点:
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
您描述的是\z
,而不是$
$
匹配字符串的结尾或字符串结尾的换行符之前。“我知道下面三行代码的目的是将字符串提取为$value并存储在$header中”。。。为了记录在案,他们没有。他们的目标是从标量$value的末尾去掉空白,并将其放置在数组@header的第$i个元素中。