Perl:使用区分大小写的反向引用进行正则表达式替换

时间:2017-07-26 19:38:30

标签: regex perl backreference

你能帮我找到一个可以进行查找/替换的perl单行程序,如下所示:

查找: a somestring 替换: b somestring

查找: A somestring 替换: B somestring

基本上需要以某种方式反向引用原始文本的情况,并用不同的文本替换它,但同样的情况。 (仅针对第一个字符的案例反向引用)

谢谢!

1 个答案:

答案 0 :(得分:2)

s/([mM])ark/ ( $1 eq 'm' ? 'j' : 'J' ) . 'oseph' /eg

my %repl = (
   'mark' => 'joseph',
   'Mark' => 'Joseph',
);

my $pat = join '|', map quotemeta, keys %repl;
my $re = qr/$pat/;

s/($re)/$repl{$1}/g;