Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 在Perl中,s/^\s+;//之间有什么区别和s/\s+;$/?_Regex_Perl - Fatal编程技术网

Regex 在Perl中,s/^\s+;//之间有什么区别和s/\s+;$/?

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并存储在$header中。但是我不知道
$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个元素中。