如何进行全局搜索并替换从字符串末尾开始并向后读取的一串数字?
从字符串的前面开始,我可以这样做:
someword: 12345
s/someword: [0-9][0-9]/someword: ==/g;
someword: ==345
但是只有当字符串长度为五个数字时才会起作用。无论数字字符串的长度如何,我都希望保留最后三个数字。
谢谢
答案 0 :(得分:2)
我会使用可执行文件替换。
此代码找到多个数字,后跟三个数字,并用相同数量的等于=
符号替换它们
my $s = 'someword: 12345678';
$s =~ s/ (\d+) (?=\d{3}) / '=' x length $1 /xe;
print $s;
<强>输出强>
someword: =====678
答案 1 :(得分:0)
只需使用positive lookahead assertion:
my $string = 'someword: 12345';
$string =~ s/\d(?=\d{3})/=/g;
print "$string\n";
输出:
someword: ==345