gpt4 book ai didi

regex - Perl 同时替换多个字符串

转载 作者:行者123 更新时间:2023-12-03 20:27:47 24 4
gpt4 key购买 nike

有没有办法替换一个字符串中的多个字符串?
例如,我有字符串 hello world what a lovely day我想更换 whatlovely用别的东西..

$sentence = "hello world what a lovely day";
@list = ("what", "lovely"); # strings to replace
@replist = ("its", "bad"); # strings to replace with
($val = $sentence) =~ "tr/@list/@replist/d";
print "$val\n"; # should print "hello world its a bad day"..

任何想法为什么它不起作用?

谢谢。

最佳答案

首先,tr不能那样工作;咨询 perldoc perlop欲知详情,但 tr做音译,和代换有很大的不同。

为此,更正确的替换方法是

# $val
$val =~ s/what/its/g;
$val =~ s/lovely/bad/g;

请注意,“同时”更改相当困难,但我们可以这样做,例如,
%replacements = ("what" => "its", "lovely" => "bad");
($val = $sentence) =~ s/(@{[join "|", keys %replacements]})/$replacements{$1}/g;

(当然,用元字符替换字符串可能需要转义。)

这仍然只是从一个非常松散的意义上来说是同时的,但在大多数情况下,它确实表现得好像替换是在一次传递中完成的。

另外,替换 "what"更正确与 "it's" , 而不是 "its" .

关于regex - Perl 同时替换多个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16826865/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com