regex - 比赛前如何查找和替换?
问题描述
我有逗号分隔的数据,例如 12345,6789,567890。我想要的是在第一个逗号之前找到 3 位数字并在它们开始的地方放一个逗号。鉴于上述条目,我想在第一个逗号之前找到 3 位数字,即 345 并将条目“12345”转换为“12,345”。
在第一个逗号出现之前查找 3 位数字的正则表达式是什么,以及如何在这 3 位数字之前放置逗号。我正在使用 vim。
解决方案
你已经用 perl 标记了,所以你可以这样做:
echo '12345,6789,567890' | perl -pe 's/^[^,]*\K(?=\d{3},)/,/'
12,345,6789,567890
解释:
^ # beginning of line
[^,]* # 0 or more any character but comma
\K # forget all we have seen until this position
(?= # positive lookahead, make sure we have after:
\d{3} # 3 digits
, # a comma
) # end lookahead
推荐阅读
- reactjs - 可以将 POST 请求重定向为另一个 GET 请求吗
- flutter - CocoaPods 要求您的终端使用 UTF-8 编码。考虑将以下内容添加到 ~/.profile。导出 LANG=en_US.UTF-8
- javascript - Firebase 存储中的 async/await(上传文件后等待获取 URL)
- amazon-web-services - AWS 托管服务的访问控制
- python-3.x - ImportError:无法在 Ubuntu 18.04 上导入名称“gTTS”
- c++ - 'true' 和 'false' 在预处理器条件中有它们通常的含义吗?
- python - 无法使 OpenCV scr 参数接受字符串输入
- video - 如何在几秒钟内可靠地找到视频的帧数?
- gremlin - Gremlin 3.2.4 上的 Gremlin 数学步骤替代方案
- python - 正则表达式匹配句点但不在数字之间