在Perl中,匹配的正则表达式中有多少组?

div*_*ero 1 regex perl types capturing-group

我想说一个数字1和字符串之间的区别'1'.

我想这样做的原因是因为我想确定成功匹配后正则表达式中捕获括号的数量.根据perlop doc,当模式中没有捕获组时,返回列表(1).因此,如果我得到一个成功的匹配和一个列表(1),那么我无法判断该模式是否没有parens或它有一个paren并且它匹配'1'.如果数字1和字符串之间存在差异,我可以解决这种歧义'1'.

cjm*_*cjm 6

您可以使用特殊的@ +数组来判断上次成功匹配中有多少个捕获组. $#+是捕获组的数量.如果那是0,则没有捕获括号.