[Regex] 给数据添加分隔符

Regex:##

// 以逗号分隔数据,每三位做一个分隔
(?<=\d)(?<!\.\d*)(?=(?:\d{3})+(?:\.|$))
// replace to  "," 

Analysis:##

  • (?<=\d) 零宽断言,匹配第一个数字以后的位置,防止出现类似 ,123,456 等在数据开头添加分隔符的情况
  • (?<!\.\d*) 零宽断言,反向匹配,匹配小数点以前的位置,防止出现类似 123,456.789,123 等在小数点之后插入分隔符的情况
  • (?=(?:\d{3})+(?:\.|$)) 零宽断言,(?:\d{3})+ 正向查找三个数字连续出现的情况 (?:\.|$) 最终以小数点或者数据末位结尾
  • 整个表达式并没有匹配任何字符,仅仅匹配位置,然后将获取到的应该插入分隔符的位置替换为逗点分隔符
  • 表达式中的数字3和替换字符逗号可按需替换

Test Case:##

-4321234.12345678
1231238947
13405023405179
+19823748917
+10293490.12341954234
1902378490103.1239412793
-1239478193.1234523452341
123
123456

Result:##

-4,321,234.12345678
1,231,238,947
13,405,023,405,179
+19,823,748,917
+10,293,490.12341954234
1,902,378,490,103.1239412793
-1,239,478,193.1234523452341
123
123,456
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 正则表达式 \n\n\n 【5】正则表达式应用——删除空行 启动EditPlus,打开待处理的文本类型文件。 ①、...
    黄花菜已凉阅读 4,685评论 0 4
  • 初衷:看了很多视频、文章,最后却通通忘记了,别人的知识依旧是别人的,自己却什么都没获得。此系列文章旨在加深自己的印...
    DCbryant阅读 9,504评论 0 20
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,380评论 19 139
  • 参考文章 正则表达式30分钟入门教程 学习之前 学习之前,先安装一个Mac上用的软件,来测试你的正则表达式是否正确...
    刘大帅阅读 9,242评论 2 36
  • 麓湘山江时时云,天遮日蔽接黄昏。 乌松路里少人意,青湿檐下差雀啼。 绿土轻堆难扶春,红泥粉砌失画壁。 盼君来弹乐仙...
    后夏夕颜心静如水阅读 2,755评论 6 7