我有逗号分隔的数据,例如12345,6789,567890。我想要的是在第一个逗号之前找到3位数字,并在它们开始处添加一个逗号。给定以上条目,我想在第一个逗号之前找到3位数字,即345,然后将条目“ 12345”转换为“ 12,345”。
在第一次出现逗号前查找3位数字的正则表达式是什么,以及如何在这3位数字前添加逗号。我正在使用vim。
答案 0 :(得分:4)
您已经用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
答案 1 :(得分:1)
要查找和替换,您需要捕获组。允许您执行此操作的正则表达式为:
(\d{3},)([\d,]*)
但是,要能够使用它在vim
中查找和替换,您需要进行简单的修改,因为它需要跳过量词的第一个大括号。然后,您只需在整个比赛之前插入昏迷即可。您可以在vim
中直接使用以下语句:
.s/\d\{3},[\d,]*/,\0/
作为简要说明,\d\{3},
允许您将第一个逗号和逗号之前的前三个数字完全匹配。然后其余的正则表达式允许您捕获尾随部分。最后,在vim
中,,\0
允许您在完全匹配之前设置一个逗号。