前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >VBA:正则表达式(9) -添加千分位(2/3)

VBA:正则表达式(9) -添加千分位(2/3)

作者头像
Exploring
发布于 2023-10-09 05:59:10
发布于 2023-10-09 05:59:10
41000
代码可运行
举报
运行总次数:0
代码可运行

上一篇文章(参见文末的参考资料[1])提到,简单合并正则表达式的运行结果并不理想,问题在于小数部分也可能匹配到。

2 继续试错

目前的重点是如何过滤到小数部分的数字,使之不被捕获。使用如下的正则表达式:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
((\.\d+[\w\W]*?)*?\d)(?=(\d{3})+(\D|$))

(1)?=(\d{3})+(\D|),顺序肯定环视,所在位置的右侧,连续数字字符的个数是三的整数倍;并且其后跟随一个非数字字符,或者结束标识符。\D,表示非数字字符。

(2)\.\d+[\w\W]*?,也就是捕获组$2。小数点后至少跟一个数字,非贪心匹配任意数量的任意字符(可以有,也可以没有)。\w匹配字母和数字;\W匹配非字母和非数字。[\w\W]就是匹配任意字符。多提一句,字符.,匹配的是任意字符,但换行符除外。

(3)($2)*?\d,匹配任意数量的匹配组2,后跟一个数字。也就是说,可以有或者没有小数点。

运行效果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
文本1123456789
替换文本:$1,
结果:123,456,789
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
文本2:
圆周率3.1415926535
珠穆朗玛峰高度8848.0

替换文本:$1,

结果:
圆周率3.1415926535
珠穆朗玛峰高度8,848.0
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
文本31234576.7898
替换文本:$1,
结果:1,234,576.7,898

可以看出,包含小数的字符串出现在文本末尾时,正则表达式的运行效果还是不太理想。由于小数部分符合匹配规则,因此,小数部分也添加了千分位。

(未完待续)

参考资料:

[1] VBA:正则表达式(9) -添加千分位(1/3)

[2] 正则测试(https://tool.chinaz.com/regex)

[3] VBA之正则表达式(10)-- 添加千分位(2/3)(https://blog.csdn.net/taller_2000/article/details/89792241)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-10-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据处理与编程实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2 继续试错
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档