精易论坛

标题: 正则实现数字的科学计数 [打印本页]

作者: 冯古屋    时间: 2017-2-28 22:58
标题: 正则实现数字的科学计数
起由,问答区的提问,我已开始想到了用正则,匹配出3位数,然后前面+,,搞定,但是后来我操作发现,不行,有问题,正则是从右往左的,尴尬了,若是从左往右就好办了
于是乎,各种找资料
虽然,找到了,公式:(?=(?:\d{3})+(?!\d),但是我仍然还不能读懂这行代码的意思,似懂非懂,求大神能帮忙逐一的分析下
调用了精易模块,拿来主义的话,就当一个固定格式去记住就行了。
ceshi.rar (144.07 KB, 下载次数: 32)


补充内容 (2017-3-1 08:39):
如果要实现1233.12也能实现匹配,那么用上述公式需要休整一下,(\d)(?=(?:\d{3})+(\.|$)),同时改写正则.替换(“$1,”)
作者: 苏子浩    时间: 2017-2-28 23:03
下载看看
作者: Siempre    时间: 2017-2-28 23:19
看你替换出来的结果有点别扭 不是千位号吗  三个一组
作者: 已注销370852    时间: 2017-2-28 23:29
提示: 作者被禁止或删除 内容自动屏蔽
作者: 冯古屋    时间: 2017-2-28 23:38
xqjj29 发表于 2017-2-28 23:29
(?=(?:\d{3})+(?!\d)
大概意思应该是:最后一个(?!\d)限定,后面跟随的不能是数字。【*】
(?:\d{3})+:\d ...

我觉得关键在(?=)零宽正先行断言
作者: 已注销370852    时间: 2017-2-28 23:48
提示: 作者被禁止或删除 内容自动屏蔽
作者: 已注销370852    时间: 2017-2-28 23:49
提示: 作者被禁止或删除 内容自动屏蔽
作者: 已注销370852    时间: 2017-2-28 23:52
提示: 作者被禁止或删除 内容自动屏蔽
作者: 亚子    时间: 2017-3-1 02:05
唉 正则好长不用 都忘光了  常用的就只有.*?了
作者: 冯古屋    时间: 2017-3-1 09:11
麦乐学园 发表于 2017-3-1 02:05
唉 正则好长不用 都忘光了  常用的就只有.*?了

这个么常用常新,想到再去查也拉得及。
作者: welfare1234    时间: 2017-3-1 09:17
感谢楼主分享学习了。
作者: 970620    时间: 2017-3-1 22:11
666666666666666666666
作者: gfgvhuf    时间: 2023-9-4 15:48
有用.   太感谢了.  
省去了设置一大堆判断和取左取右




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4