我想构建一个正则表达式,允许我解析数千行的文本文件,每行包含一个数字可变的数字。
每个数字只能包含数字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个,一个零 ,关键字在任何地方。
答案 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;