9

我想知道perl特殊变量的含义$-[0]$+[0]

我用谷歌搜索,发现它$-代表页面上剩下的行数,$+代表最后一个搜索模式匹配的最后一个括号。

但我的问题是正则表达式上下文中的含义$-[0]和含义。$+[0]

让我知道是否需要代码示例。

4

3 回答 3

14

请参阅perldoc perlvar和。@+@-

$+[0]是整个匹配结束的字符串中的偏移量。

$-[0]是最后一次成功匹配开始的偏移量。

于 2012-06-25T09:55:49.923 回答
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.

于 2012-06-25T09:55:30.930 回答
5

添加示例以更好地理解$-[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
于 2012-06-25T13:37:22.347 回答