以0作为分隔符的数字组

时间:2014-04-14 14:48:47

标签: regex

可以通过0(零)分隔符将较长的自然数分组为较小的数字。 示例:4201100370880

这将分为Group1: 42Group2: 110Group3: 370880 有3组,组从不以0开始,至少有1个字符长。最后一组也是"原因是",这意味着它不会被拖尾0终止。

这就是我提出的,但它仅适用于某些输入(如420110037880):

(\d+)0([1-9][0-9]{1,2})0([1-9]\d+)

这表明我试图将第二组的长度宣布为min2 max3,但我认为正确的解决方案不应该关心它。如果分隔符是非数字的,我可以解决它,但我很难过。

3 个答案:

答案 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)

以下内容应符合您的需求:

^(.*?)0(?!0)(.*?)0(?!0)(.*)$

Regular expression visualization

Debuggex

的可视化