Perl替换简化

时间:2019-04-03 16:46:05

标签: regex perl

我正在做一些字符串解析,我想知道是否有一种方法可以将这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 个答案:

答案 0 :(得分:4)

$msgPayload =~ s/:\s?([-\d])/:"$1/g;

括号中创建一个“捕获组”,替换模式中的$1表示第一个捕获组的内容。

答案 1 :(得分:4)

您可以使用捕获组,并使用$1

将其用于替换组
:\s?([0-9-])

您的代码可能如下:

$msgPayload =~ s/:\s?([0-9-])/:"$1/g