首页 > 解决方案 > 比赛前如何查找和替换?

问题描述

我有逗号分隔的数据,例如 12345,6789,567890。我想要的是在第一个逗号之前找到 3 位数字并在它们开始的地方放一个逗号。鉴于上述条目,我想在第一个逗号之前找到 3 位数字,即 345 并将条目“12345”转换为“12,345”。

在第一个逗号出现之前查找 3 位数字的正则表达式是什么,以及如何在这 3 位数字之前放置逗号。我正在使用 vim。

标签: regexperlpcreviregex-lookarounds

解决方案


你已经用 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

推荐阅读