使用Perl,搜索并替换在该字符串上向后工作的数字字符串

时间:2014-08-11 22:41:39

标签: perl

如何进行全局搜索并替换从字符串末尾开始并向后读取的一串数字?

从字符串的前面开始,我可以这样做:

someword: 12345
s/someword: [0-9][0-9]/someword: ==/g;
someword: ==345

但是只有当字符串长度为五个数字时才会起作用。无论数字字符串的长度如何,我都希望保留最后三个数字。

谢谢

2 个答案:

答案 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