Perl:regex替换与区分大小写的反向引用

Perl:regex替换与区分大小写的反向引用,regex,perl,backreference,Regex,Perl,Backreference,您能否帮助我找到一个perl one liner,它可以执行以下查找/替换操作: 查找:asomestring 替换:bsomestring 查找:Asomestring 替换:Bsomestring 基本上需要以某种方式反向引用原始文本的情况,并将其替换为不同的文本,但相同的情况。(仅第一个字符的大小写反向引用) 谢谢 s/([mM])ark/ ( $1 eq 'm' ? 'j' : 'J' ) . 'oseph' /eg 或 或 我不知道/e修饰符。太好了,谢谢!它使替换表达式成为回调。基

您能否帮助我找到一个perl one liner,它可以执行以下查找/替换操作:

查找:asomestring 替换:bsomestring

查找:Asomestring 替换:Bsomestring

基本上需要以某种方式反向引用原始文本的情况,并将其替换为不同的文本,但相同的情况。(仅第一个字符的大小写反向引用)

谢谢

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


我不知道/e修饰符。太好了,谢谢!它使替换表达式成为回调。基本上,
s{…}{…}
s{…}{qq{…}}e的缩写。如果两个例子中的“somestring”都不一样,会是什么样的情况,有点像:(我应该更清楚)find:matt replace:joseph find:matt replace:Joseph@geekyclimber-如果你要走那条路,就用散列法。我不知道/e修饰符。太好了,谢谢!它使替换表达式成为回调。基本上,
s{…}{…}
s{…}{qq{…}}e的缩写。如果两个例子中的“somestring”都不一样,会是什么样的情况,有点像:(我应该更清楚)find:matt replace:joseph find:matt replace:Joseph@geekyclimber-如果你要走那条路,就用散列法。“给我代码”通常不是这样工作的。你试过什么吗?对不起,我对stackoverflow是个新手。谢谢你指出这一点。“给我代码”通常不是这样工作的。你试过什么吗?对不起,我对stackoverflow是个新手。谢谢你指出这一点。
my %repl = (
   'mark' => 'joseph',
   'Mark' => 'Joseph',
);

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

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