2016-11-08 18 views
1

パターンに一致する文字列を生成するためにXegerで使用している正規表現があります。英数字の正規表現の限界数

現在、私は持っている:私は、任意の1つの文字や数字の2つの出現の最大値を持つように結果を制限するために

Xeger generator = new Xeger("[a-zA-Z]{8,16}[0-9]{1,6}"); 

string result = generator.Generate(); 

探していますが。例えば。

aabbcc11は -

に失敗 -

AABBCC が通過 -

aabb112233に​​失敗 -

BBB CC11を失敗 -

AAA BC11を通過します210

BB CC 11 -

失敗いただきまし正規表現でこれを行うにはクリーンな方法?

+0

どのような言語ですか? –

+0

@WiktorStribiżewC#実際にXegerの.Netポート(https://github.com/moodmosaic/Fare)を使用しています – haddow64

+0

'string result'にはどのような値が入りますか?何の文字列ですか? Regex.IsMatch(result、@ "(。)(?:。* \ 1){2}")のような正規表現は、別の場合には "悪い"アイテムを見つけるのに役立ちます。 –

答えて

1

あなたは "悪い" の候補者をフィルタリングするためにRegex.IsMatch(result, @"(.)(?:.*\1){2}")を使用することがあります。

List<string> results = new List<string>(); 
... 
string result = generator.Generate(); 
if (!Regex.IsMatch(result, @"(.)(?:.*\1){2}")) { 
    results.Add(result); 
} 

pattern demoを参照してください。詳細:

  • (.)から2つの改行(.*)以外の任意の0+文字の出現({2})およびグループ1(\1)でキャプチャ値 - グループ1は、改行以外
  • (?:.*\1){2}をチャーを捕捉します。
関連する問題