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;
解决方案
$msgPayload =~ s/:\s?([-\d])/:"$1/g;
括号创建一个“捕获组”,$1
在替换模式中表示第一个捕获组的内容。
推荐阅读
- ffmpeg - 当我尝试将 jpg 更改为 mp4 时,std::system 停止
- ios - 是否可以更改 TableView 和 SearchBar Delegates 的处理顺序?
- facebook - 是否可以从 Facebook Pixel 隐藏引用页面 URL?
- java - 我应该如何从我的数据库中获取所有消息并返回它
- javascript - fs 不下载图像
- php - 获取 Array 数据(序列化数据?)并显示,这段代码运行良好,但是为什么,它是否正确?
- c - 关于涉及 scanf() 的简单 C 程序的错误
- azure - 无法删除已禁用的订阅
- php - 致命错误:未捕获的错误:C:\xampp\htdocs\tutorial\Online_exam 中未定义的常量“登录”
- python - 从 4 个摄像头创建实时 3D 视频流