Perl中的分组匹配
从Perl中的正则表达式角度来看,以下两个表达式之间没有区别,只是前者稍微清晰些。
$string =~ /(\S+)\s+(\S+)/; and $string =~ /\S+\s+\S+/;
但是,分组的好处是它允许我们从正则表达式中提取序列。分组以列表在原始组中出现的顺序作为列表返回。例如,在以下片段中,我们从字符串中拉出了小时,分钟和秒。
my ($hours, $minutes, $seconds) = ($time =~ m/(\d+):(\d+):(\d+)/);
除此直接方法外,还可以在特殊的$x变量中使用匹配的组,其中x是正则表达式中组的编号。因此,我们可以将前面的示例重写如下:
示例
#!/usr/bin/perl $time = "12:05:30"; $time =~ m/(\d+):(\d+):(\d+)/; my ($hours, $minutes, $seconds) = ($1, $2, $3); print "Hours : $hours, Minutes: $minutes, Second: $seconds\n";
当执行上述程序时,将产生以下结果-
Hours : 12, Minutes: 05, Second: 30
在替换表达式中使用组时,可以在替换文本中使用$x语法。因此,我们可以使用以下命令重新格式化日期字符串-
示例
#!/usr/bin/perl $date = '03/26/1999'; $date =~ s#(\d+)/(\d+)/(\d+)#$3/$1/$2#; print "$date\n";
当执行上述程序时,将产生以下结果-
1999/03/26
热门推荐
10 医院探望朋友祝福语简短
11 毕业祝福语简短女朋友
12 春节虎年爸妈祝福语简短
13 儿童毕业祝福语 简短6
14 开工仪式横幅祝福语简短
15 孩子日常祝福语大全简短
16 清晨寄语诗句祝福语简短
17 结婚送亲认亲祝福语简短
18 虎年喝酒拜年祝福语简短