正则表达式匹配某些数字模式

时间:2012-02-29 20:19:54

标签: regex

我想构建一个正则表达式,允许我解析数千行的文本文件,每行包含一个数字可变的数字。

每个数字只能包含数字1或0(零)。

要求是数量必须至少为3 1,并且至少为零。因此,每个数字的最小所需大小为4,并且它具有无限的最大值。

例如,它必须匹配:

000000111 - has at least 1 zero and 3 ones
1110 - same thing
11111000 - same thing
111 - FAIL, because it's under 4 digits long
0000000011 - FAIL, needs at least 3 ones

有人能帮帮我吗?我的问题是我无法确定如何在数字'中找到'至少3个,一个零 ,关键字在任何地方。

2 个答案:

答案 0 :(得分:4)

您可以将这些数字与以下内容匹配:

(?=1*0)(?:0*1){3}[10]*

(?=1*0)确保至少有1 0有一个前瞻(?=...)

(?:0*1){3}将该号码与3 1 s匹配

[10]*匹配其余的或数字

答案 1 :(得分:0)

除非这是严格的正则表达式练习/练习,否则这将更容易手工完成。 (并且因为正则表达式会很复杂(我猜),它会更有效率)

int ones = 0;
int zeroes = 0;
for(int i=0;i<str.length();++i)
{
    if(str[i] = '0')
        ++zeroes;
    else if(str[i] = '1')
        ++ones;
}

if(ones+zeroes >= 4 && ones >=3 && zeroes >= 1)
    return true;