我正在尝试计算字符串中的相邻事件。例如:
my $pattern = "aa";
my $string = "aaa";
my @matches = $string =~ /($pattern)+/g;
my $c = @matches;
print "$c\n";
这打印1但我希望它是2,因为在“aaa”中实际上有2个相邻的“aa”出现
谢谢!
答案 0 :(得分:6)
您可以使用零宽度前瞻而不是匹配:
use strict;
use warnings;
my $pattern = "(?=aa)";
my $string = "aaa";
my @matches = $string =~ /$pattern/g;
my $c = @matches;
print "$c\n";
//=> 2
(?=aa)
是一个积极的先行,如果它在当前位置之前找到aa
,它将断言为真。