我想知道perl特殊变量$-[0]
和$+[0]
我用Google搜索,发现$-
表示页面上剩余的行数,而$+
表示与上一个搜索模式匹配的最后一个括号。
但我的问题是$-[0]
和$+[0]
在正则表达式的上下文中的含义。
如果需要代码示例,请告诉我。
答案 0 :(得分:14)
请参阅perldoc perlvar
关于@+
和@-
。
$+[0]
是整个匹配结束字符串的偏移量。
$-[0]
是上次成功比赛开始的偏移量。
答案 1 :(得分:8)
这些都是数组中的元素(用方括号和数字表示),所以你想搜索@ - (数组)而不是$ - (一个不相关的标量变量)。
推荐
perldoc perlvar
解释了Perl的特殊变量。如果你在那里搜索@ - 你会发现。
$-[0] is the offset of the start of the last successful match. $-[n] is the offset of the start of the substring matched by n-th subpattern, or undef if the subpattern did not match
。
答案 2 :(得分:4)
添加示例以更好地了解$-[0]
,$+[0]
还在变量$+
use strict;
use warnings;
my $str="This is a Hello World program";
$str=~/Hello/;
local $\="\n"; # Used to separate output
print $-[0]; # $-[0] is the offset of the start of the last successful match.
print $+[0]; # $+[0] is the offset into the string of the end of the entire match.
$str=~/(This)(.*?)Hello(.*?)program/;
print $str;
print $+; # This returns the last bracket result match
输出:
D:\perlex>perl perlvar.pl
10 # position of 'H' in str
15 # position where match ends in str
This is a Hello World program
World