【发布时间】:2022-01-18 05:32:54
【问题描述】:
当 Perl 正则表达式变量 $+{name} 和 $-{name} 用于从 Perl 语句/表达式代码中引用同一个正则表达式组时,它们有什么区别?
【问题讨论】:
当 Perl 正则表达式变量 $+{name} 和 $-{name} 用于从 Perl 语句/表达式代码中引用同一个正则表达式组时,它们有什么区别?
【问题讨论】:
而$+{name} 包含name 引用的捕获子字符串
作为一个标量值,$-{name} 指的是一个 array 包含捕获
具有名称的组。
这是一个小例子:
#!/usr/bin/perl
use strict;
use warnings;
'12' =~ /(?<foo>\d)(?<foo>\d)/; # '1' and '2' will be captured individually
print $+{'foo'}, "\n"; # prints '1'
for (@{$-{'foo'}}) { # $-{'foo'} is a reference to an array
print $_, "\n"; # prints '1' and '2'
}
因为$+{name} 只能保存一个标量值,所以它被赋值
到捕获组的第一个(最左边)元素。
【讨论】: