+ -
当前位置:首页 → 问答吧 → 各位大侠,有知道perl正则表达式中@+和@-代表什么?

各位大侠,有知道perl正则表达式中@+和@-代表什么?

时间:2010-09-26

来源:互联网

如题,我在看大骆驼书时遇到的,不理解是什么含义,有什么作用,请高人详细讲解一下。

作者: li_000828   发布时间: 2010-09-26

都有大骆驼了,为啥不翻特殊名字那章找一下?
@+:到匹配结尾的偏移量
@-:到匹配开头的偏移量

作者: Mr-Summer   发布时间: 2010-09-26

回复 li_000828

比如:
#!/usr/bin/perl
$str="abc";
$str =~ /(\w)(\w)(\w)/;
print "@+\n";
print "@-\n";

结果为:
3 1 2 3
0 0 1 2

我就是对这几个数字不理解,帮忙指点一下。

作者: li_000828   发布时间: 2010-09-26

查了一下书,我这一缩写把意思都变了;
/(\w)(\w)(\w)/匹配"abc";
@+和@-都是数组;
@+里的第一个元素$+[0]是整个匹配结尾的偏移量(c结尾到字符开头:3),然后$+[1]是$1结束的偏移量(a的结尾到字符开头:1);
$-[0]是整个匹配开头的偏移量(a的开头到字符开头:0),然后$-[1]是$1开头的偏移量(a的开头到字符的开头:0);

作者: Mr-Summer   发布时间: 2010-09-26

回复 li_000828


    哦,明白了,第一个数字表示整体匹配的起始或结束位置,其它的分别表示每一个匹配的开始或结束位置,多谢指点!!!

作者: li_000828   发布时间: 2010-09-26