Perl Заменить Упростить - PullRequest
0 голосов
/ 03 апреля 2019

Я работал над некоторым разбором строк, и мне было интересно, есть ли способ заменить эти 11 строк одной, я знаю, что могу использовать \ d для выбора цифры, но есть ли способ использовать эту же цифру в строка замены?

Спасибо заранее

$msgPayload =~ s/:\s?-/:"-/g;
$msgPayload =~ s/:\s?1/:"1/g;
$msgPayload =~ s/:\s?2/:"2/g;
$msgPayload =~ s/:\s?3/:"3/g;
$msgPayload =~ s/:\s?4/:"4/g;
$msgPayload =~ s/:\s?5/:"5/g;
$msgPayload =~ s/:\s?6/:"6/g;
$msgPayload =~ s/:\s?7/:"7/g;
$msgPayload =~ s/:\s?8/:"8/g;
$msgPayload =~ s/:\s?9/:"9/g;
$msgPayload =~ s/:\s?0/:"0/g;

Ответы [ 2 ]

4 голосов
/ 03 апреля 2019

Вы можете использовать группу захвата и использовать ее при замене, используя $1

:\s?([0-9-])

Ваш код может выглядеть следующим образом:

$msgPayload =~ s/:\s?([0-9-])/:"$1/g
4 голосов
/ 03 апреля 2019
$msgPayload =~ s/:\s?([-\d])/:"$1/g;

Скобки создают «группу захвата», а $1 в шаблоне замены означает содержимое 1-й группы захвата.

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