Perl中的正则表达式匹配计数

Kat*_*Kat 2 regex perl

我正在匹配A <=> B!C <=> D!E <=> F ...形式的字符串,并希望对字母进行检查.基本上我想根据我定义的哈希来判断字母是否在类中.我有想法做以下正则表达式然后循环匹配的字符串:

$a =~ /(.)<=>(.)/g;
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚有多少$ 1,$ 2变量匹配.我怎么知道有多少?另外,有更好的方法吗?我使用的是Perl 5.8.8.

Zai*_*aid 7

您需要'countof'运算符来计算匹配数:

my $count = () = $string =~ /(.)<=>(.)/g;
Run Code Online (Sandbox Code Playgroud)

用数组替换空列表将保留匹配:

my @matches = $string =~ /(.)<=>(.)/g;
Run Code Online (Sandbox Code Playgroud)

这提供了另一种方式来获得$count:

my $count = @matches;   # scalar @matches works too
Run Code Online (Sandbox Code Playgroud)