加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

正则表达式 – Perl同时替换多个字符串

发布时间:2020-12-14 06:30:46 所属栏目:百科 来源:网络整理
导读:有没有办法替换字符串中的多个字符串? 例如,我有一个字符串你好世界是多么可爱的一天,我想用其他东西替换什么和可爱的.. $sentence = "hello world what a lovely day";@list = ("what","lovely"); # strings to replace@replist = ("its","bad"); # string
有没有办法替换字符串中的多个字符串?
例如,我有一个字符串你好世界是多么可爱的一天,我想用其他东西替换什么和可爱的..
$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 "$valn"; # 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”更为正确.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读