Given ...
Ax~B~xCx~xDx
...发出...
A~-B-~C~-~D~
我想用-代替~字符,用~代替x字符。
我可以这样写...
s/~/-/g;s/x/~/g;
...但这个过程(看起来)会对字符串进行两次操作。
Given ...
Ax~B~xCx~xDx
...发出...
A~-B-~C~-~D~
我想用-代替~字符,用~代替x字符。
我可以这样写...
s/~/-/g;s/x/~/g;
...但这个过程(看起来)会对字符串进行两次操作。
使用“transliterate”来基于字符进行替换。尝试这个:
tr/~x/\-~/;
tr/~x/-~/
就是您要查找的内容。您的音译没有使用正则表达式元字符,而是将它们视为字符串文字,用 [
替换 [
,用 ,
替换 ,
,以此类推。 - TLP由于您正在处理单个字符,因此tr///是显而易见的答案:
tr/~x/-~/;
my %subs = ( '~' => '-', 'x' => '~' );
my $pat = join '|', map quotemeta, keys %subs;
s/($pat)/$subs{$1}/g;