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