我正在做一些字符串解析,我想知道是否有一种方法可以将这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;
答案 0 :(得分:4)
$msgPayload =~ s/:\s?([-\d])/:"$1/g;
括号中创建一个“捕获组”,替换模式中的$1
表示第一个捕获组的内容。
答案 1 :(得分:4)
您可以使用捕获组,并使用$1
:\s?([0-9-])
您的代码可能如下:
$msgPayload =~ s/:\s?([0-9-])/:"$1/g