Sublime Text 3正则表达式分组失效:如何保留数字前两位小数?
解决Sublime Text正则保留两位小数的问题
你的问题不是Sublime Text的设置问题,是正则写法不对导致的。你写的\.[0-9]{2}([0-9]*),会把从.到,的整个片段(比如.0977452,)都匹配上,分组只是里面的多余数字,但替换时如果直接用这个正则,肯定会替换整个匹配内容,而不是只替换分组部分。
给你两种可行的解决方案:
方案一:捕获保留部分
- 打开替换面板(Windows/Linux按
Ctrl+H,Mac按Cmd+H),点击左下角的.*按钮开启正则模式 - 查找内容:
(\.\d{2})\d+, - 替换内容:
\1,
这个正则里,(\.\d{2})会捕获小数点加前两位小数,后面的\d+,是要删除的多余数字和逗号,替换时保留捕获的\1再加上逗号,就能实现只留前两位小数。
方案二:用正向断言匹配要删除的部分
- 同样打开替换面板并开启正则模式
- 查找内容:
(?<=\.\d{2})\d+, - 替换内容:
,
这个写法更简洁,(?<=\.\d{2})是正向预查,确保前面已经有小数点加两位小数,后面的\d+,就是要删掉的多余数字和逗号,直接替换成逗号即可。
测试你给的示例数字,用任意一种方案都能得到:57.09, 56.11, 55.16, 54.22, 53.30,
内容的提问来源于stack exchange,提问作者guidout
相关产品推荐
相关产品推荐

