$ 1在Perl中意味着什么?此外,$ 2是什么意思?有多少个$ number变量?
Answers:
该$number
变量包含字符串匹配的部分捕捉组 ( ... )
的图案为你最后的正则表达式匹配,如果匹配成功。
例如,使用以下字符串:
$text = "the quick brown fox jumps over the lazy dog.";
声明后
$text =~ m/ (b.+?) /;
$1
等于文本“ brown
”。
数字变量是您应用的最后一个成功匹配或替换运算符的匹配:
my $string = 'abcdefghi';
if ($string =~ /(abc)def(ghi)/) {
print "I found $1 and $2\n";
}
在使用$1
等之前,请始终测试匹配或替换是否成功。否则,您可能会从其他操作中提取剩余物。
Perl正则表达式记录在perlre中。
这些称为“匹配变量”。如前所述,它们包含您上一次正则表达式匹配中的文本。
更多信息在Essential Perl中。(Ctrl+F用于“匹配变量”以找到相应的部分。)
由于您询问了捕获组,因此您可能也想了解$ +。
use Data::Dumper;
$text = "hiabc ihabc ads byexx eybxx";
while ($text =~ /(hi|ih)abc|(bye|eyb)xx/igs)
{
print Dumper $+;
}
输出:
$ VAR1 ='hi';
$ VAR1 ='ih';
$ VAR1 ='再见';
$ VAR1 ='eyb';
通常,有关Perl中“魔术”变量的问题可以通过查看Perl预定义变量文档中的la来回答:
perldoc perlvar
但是,当您在本文档中搜索$ 1等时,您会在许多地方找到引用,但这些“数字”变量的内容除外。您必须搜寻
$<digits>
我本可以通过评论或编辑将其添加到Brian的答案中,但是我没有足够的代表。如果有人添加了此内容,我将删除此答案。