Добавить смещение к числам в многострочной строке - PullRequest
0 голосов
/ 21 апреля 2020

Использование Perl Я пытаюсь добавить смещение к числам в строке слов в строках. Например:

ABC10XYZ8 ( 50  100)
ABC11XYZ8 ( 150 200)
ABC12XYZ8 ( 150 300)

Мне нужно изменить его на

ABC20XYZ8 ( 150 150)
ABC21XYZ8 ( 250 250)
ABC22XYZ8 ( 250 350)

По сути, добавить смещение скажем 10, 100, 50 в эти ключевые места.

Как-то Я не могу его оценить.

1 Ответ

2 голосов
/ 21 апреля 2020

Ты довольно близко. Вам не хватает флага e для подстановки, которая оценивает замещающую строку как выражение. Кроме того, \A в вашем взгляде не имеет смысла - вам, вероятно, нужен здесь литерал A.

use strict;
use warnings;

my $str = "ABC10XYZ8 ( 50  100)
ABC11XYZ8 ( 150 200)
ABC12XYZ8 ( 150 300)";
$str =~ s/(?<=ABC)([0-9]+)/10+$1/ge;
$str =~ s/(?<=\( )([0-9]+)/100+$1/ge;
$str =~ s/([0-9]+)(?=\))/50+$1/ge;
print $str;

Вывод:

ABC20XYZ8 ( 150  150)
ABC21XYZ8 ( 250 250)
ABC22XYZ8 ( 250 350)

Конечно, если вы У вас есть много таких маленьких шаблонов, вы, вероятно, захотите создать массив пар и написать al oop, или создать какую-то абстракцию подпрограммы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...