可以通过0(零)分隔符将较长的自然数分组为较小的数字。
示例:4201100370880
这将分为Group1: 42
,Group2: 110
,Group3: 370880
有3组,组从不以0开始,至少有1个字符长。最后一组也是"原因是",这意味着它不会被拖尾0终止。
这就是我提出的,但它仅适用于某些输入(如420110037880):
(\d+)0([1-9][0-9]{1,2})0([1-9]\d+)
这表明我试图将第二组的长度宣布为min2 max3,但我认为正确的解决方案不应该关心它。如果分隔符是非数字的,我可以解决它,但我很难过。
答案 0 :(得分:1)
好的,考虑到评论信息,尝试拆分正则表达式(这可能会因您使用的语言而异 - 在JavaScript中使用.split(/.../)
,在PHP中使用preg_split
等等)
您要拆分的正则表达式是:0(?!0)
。这转化为"零,后面没有零"。我相信这会解决你的分裂问题。
如果您的语言允许limit
参数(PHP确实如此),请将其设置为3.如果不是,则需要执行以下操作(JavaScript):
result = input.split(/0(?!0)/);
result = result.slice(0,2).concat(result.slice(2).join("0"));
答案 1 :(得分:0)
以下正则表达式有效:
(\d+?)0(?!0)
使用g
修饰符
演示:http://regex101.com/r/rS4dE5
只有三场比赛,你可以这样做:
(\d+?)0(?!0)(\d+?)0(?!0)(.*)
答案 2 :(得分:0)