Regex 正则表达式计数相邻模式

Regex 正则表达式计数相邻模式,regex,perl,Regex,Perl,我试图计算字符串中相邻的事件。例如: my $pattern = "aa"; my $string = "aaa"; my @matches = $string =~ /($pattern)+/g; my $c = @matches; print "$c\n"; 这打印1,但我希望它是2,因为实际上在“aaa”中有两个相邻的“aa” 谢谢 您可以使用零宽度前瞻而不是匹配: use strict; use warnings; my $pattern = "(?=aa)"; my $str

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

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

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

print "$c\n";
这打印1,但我希望它是2,因为实际上在“aaa”中有两个相邻的“aa”


谢谢

您可以使用零宽度前瞻而不是匹配:

use strict;
use warnings;

my $pattern = "(?=aa)";
my $string = "aaa";

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

print "$c\n"; 
//=> 2
(?=aa)
是一个积极的前瞻,如果在当前位置之前找到
aa
,它将断言true


提示:如果您只需要计数:
my$c=()=$string=~/…/g或<代码>我的$c=0++$c而$string=~/…/g