Используя Perl, выполните поиск и замену числовой строки, работающей назад на этой строке

Как я могу выполнить глобальный поиск и заменить на строку чисел, начиная с конца строки и считая назад?

Начиная с начала строки, я могу сделать это:

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

Но это будет работать, только если строка содержит пять чисел. Независимо от длины числовой строки, я хочу сохранить последние три числа.

спасибо

2 ответа

Я бы использовал исполняемую замену.

Этот код находит несколько цифр, за которыми следуют еще три цифры, и заменяет их одинаковым числом равно = знаков

my $s = 'someword: 12345678';

$s =~ s/ (\d+) (?=\d{3}) / '=' x length $1 /xe;

print $s;

вывод

someword: =====678


Просто используйте положительное утверждение:

my $string = 'someword: 12345';

$string =~ s/\d(?=\d{3})/=/g;

print "$string\n";

Выходы:

someword: ==345

licensed under cc by-sa 3.0 with attribution.