2012-02-29 17 views
0

私は何千もの行のテキストファイルを解析できる正規表現を作成したいと思います。各行には数字の可変サイズの数字が1つ含まれています。正規表現で特定の数字パターンを一致させる

各数字には、数字の1または0(ゼロ)のみを含めることができます。

数字に少なくとも3 1、少なくともゼロが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つのものと1つのゼロを見つける方法を特定できないということです。どこでも数字の中にあります。

+0

それ可能試み文字列をソートし、その後正規表現 '0 + 1 {3}' –

答えて

4

あなたがして、このような数字と一致する可能性:3 1

[10]*試合で先読みして、少なくとも1 0(?=...)

(?:0*1){3}が一致することを確認してください

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

(?=1*0)数を休憩または番号

+0

でそれを確認する場合それは完璧に働いた、ありがとう! – swiftcode

0

厳密には正規表現の演習/練習でない限り、これは手作業で簡単に行えます。 (正規表現は、(IM推測)複雑になるので、それは方法より効率的であろう)

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; 
+0

はい、これは大学の正規表現科目のためのものですが、プログラミング言語を使用することはできません。とにかくありがとう! – swiftcode

+0

問題ありません!がんばろう –

関連する問題