正则表达式计算相邻模式

时间:2016-11-15 20:08:38

标签: regex perl

我正在尝试计算字符串中的相邻事件。例如:

my $pattern = "aa";
my $string = "aaa";

my @matches  = $string =~ /($pattern)+/g;
my $c = @matches;

print "$c\n";

这打印1但我希望它是2,因为在“aaa”中实际上有2个相邻的“aa”出现

谢谢!

1 个答案:

答案 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,它将断言为真。

Read more information about Look arounds