一段Perl的代码,输出结果为2。然而显然在字符串'aaaa'中含有3个'aa'模式。请问如何做到3次匹配?
#!/usr/bin/perl
$a = 'aaaa';
$i ++ while $a =~ /aa/g;
print $i;
一段Perl的代码,输出结果为2。然而显然在字符串'aaaa'中含有3个'aa'模式。请问如何做到3次匹配?
#!/usr/bin/perl
$a = 'aaaa';
$i ++ while $a =~ /aa/g;
print $i;
2 回答10.5k 阅读✓ 已解决
3 回答3k 阅读✓ 已解决
5 回答2.1k 阅读
正则本质是状态机一个个consume字符扭转状态,捕获成功第一个aa以后相当于前两个字符都被consume掉从第三个a开始匹配了,所以原来的结果是2,这里用零宽断言让正则去look ahead匹配模式里第二个a而不将其consume掉,从而得到3
编译原理学得不好,解释得有点乱……
图形的力量,感觉比字清楚多了