代码在这里。我的问题是因为$1
是Fred
这是一个替代品,这意味着替换fred or barney
与Fred
,为什么不能像I saw FRED with FRED.
我不知道这里发生了什么。谢谢您的回答!Perl正则表达式替换
$_ = "I saw Barney with Fred.";
s/(fred|barney)/\U$1/gi; # $_ is now "I saw BARNEY with FRED."
代码在这里。我的问题是因为$1
是Fred
这是一个替代品,这意味着替换fred or barney
与Fred
,为什么不能像I saw FRED with FRED.
我不知道这里发生了什么。谢谢您的回答!Perl正则表达式替换
$_ = "I saw Barney with Fred.";
s/(fred|barney)/\U$1/gi; # $_ is now "I saw BARNEY with FRED."
$1
指的是“无论第一个捕获组捕获什么”。所以当(fred|barney)
匹配fred
,这就是$1
包含,但是当它匹配barney
时,那么$1
包含什么。
因为捕获组不仅抓住了串Fred
也Barney
。因此,如果正则表达式引擎看到Fred
,它会立即用大写FRED替换,如果引擎看到Barney,则将其替换为Uppercase Barney。
谢谢,现在我明白了。它首先看到'barney',然后看到'fred','$ 1'仍然是最后一个值。 – Yaolong 2014-09-29 07:55:59