使用正则表达式按位数拆分数字

看下面一段代码:

s='12345678'
s.gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1,")

返回的结果是12,345,678

正则表达式中,?=为正向预查,在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串,?!为负向预查,在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串,这个正则表达式的意思为:匹配以一个数字开头,接着跟上N组3个数字,但不以一个数字结尾。

?=和?!为预查,不消耗字符串,发现匹配后立即开始下一次搜索,而不是从包含预查的字符之后开始。

gsub!和scan一样,从字符串的0位开始扫描匹配正则表达式,所以当扫描到1位时,出现第一个匹配的字符串为2345678,返回[2,678],接着向后扫描到4位时,出现第二个匹配的字符串为5678,返回[5,678]。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值