正则表达式 – 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”更为正确. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |