【发布时间】:2014-04-27 11:12:57
【问题描述】:
是否可以使用单个正则表达式根据匹配的值执行不同的替换?
例如,给定字符串“aaa bbb ccc aaa ddd”,我想用“alpha”替换每次出现的“aaa”,用“beta”替换“bbb”,用“gamma”和“ddd”替换“ccc” " 与 "delta"。
我知道,用四个单独的正则表达式替换很容易做到:
my $s = "aaa bbb ccc aaa ddd";
$s =~ s/aaa/alpha/g;
$s =~ s/bbb/betaa/g;
$s =~ s/ccc/gamma/g;
$s =~ s/ddd/delta/g;
问题是是否可以只用一个语句来做同样的事情:
$s =~ s/$pattern/$replacement/g;
如果这很重要,我正在使用 perl。
这只是我试图解决的更复杂问题的简化示例;请不要开始争辩说我问错了问题,我应该以不同的方式做...如果你真的相信,请忽略这个问题。
【问题讨论】:
-
我不这么认为。但我可能错了。