Perl正则表达式替换

时间:2014-09-29 07:45:52

标签: regex perl

代码在这里。我的问题是,由于$1Fred而且这是替代,这意味着将fred or barney替换为Fred,为什么答案不能像I saw FRED with FRED.我没有想知道这里发生了什么。谢谢你的回答!

$_ = "I saw Barney with Fred.";
s/(fred|barney)/\U$1/gi; # $_ is now "I saw BARNEY with FRED."

2 个答案:

答案 0 :(得分:1)

因为捕获组不仅捕获字符串Fred,还捕获Barney。因此,如果正则表达式引擎看到Fred,它会立即替换为大写FRED,如果引擎看到Barney,它将替换为大写Barney。

答案 1 :(得分:0)

$1指的是“捕获的第一个捕获组”。因此,当(fred|barney)fred匹配时,这就是$1包含的内容,但当它与barney匹配时,那就是$1包含的内容。

相关问题