前言
从上周开始,我忽然有一个疑问,当我在进行正则匹配时,用括号可以抓取匹配上的内容,多个括号可以对应到$1、$2、$3等;
那么问题来了,如果括号进行套娃的话,应该如何用$1、$2、$3捕获呢?
是时候挑战一下工具的底线了!
测试
测试代码如下:
#!/usr/bin/perl
my $str = "%%%%%123545NNJJDlioujsss";
if($str =~ /(((\d)(\d+)).*?([a-z]+))/){
print "$1 \n";
print "$2 \n";
print "$3 \n";
print "$4 \n";
print "$5 \n";
}
打印结果如下:
分析
根据打印的结果,$n的匹配关系是按照括号的左端"("出现的次序进行捕获的。