2009-08-04 16 views
2

文字列に定義されたシーケンス内に5文字以上の文字が含まれているかどうかを判断するには、C#regexが必要です。RegEx Match Sequence of 5 characters

例:シーケンスがアルファベットだった場合、 'ghijk'は真、 'lmn'は偽になります。

編集:シーケンスは順番に行う必要があります。上の例の 'ghijz'はfalseを返します。

+0

文字列の内容には、シーケンスのシーケンシャル要素、またはすべての要素を含める必要がありますか?つまり、シーケンスがアルファベットの場合、文字列 "pdrqa"は一致しますか? –

+0

pdrqaはシーケンスの順序と一致しないため、falseになります。 – Thad

答えて

7

あなたは、必ずしもこれを実現するために、正規表現を必要としません:

bool IsInSequence(string str, string sequence) 
{ 
    return str != null && str.Length >= 5 && sequence.Contains(str); 
} 

私はあなたがここで達成しようとしているもの欠けている場合を除き。代わりに、正規表現の

+0

ちょうど私がやったことは... C#/。NETのnullチェックとメソッドの大文字を追加するなどのマイナーな問題を修正しました。 –

+0

残りのコードは正規表現であるため、正規表現にしたいと思います。 – Thad

+2

私はあなたの欲求が一貫していることを理解することができますが、この場合、正規表現を使用しないソリューションはよりクリーンでシンプルです。 –

3
[a-zA-Z]{5,} 
+1

これは5文字以上の任意の文字列と一致しますが、OPにはシーケンスのセグメントに一致する文字列が必要です。つまり、文字列は連続した順序でなければなりません。 –

2

使用Contains()

string sequence = "abcdef" 
bool match = ("abcdefghijklmnopqrstuvwxyz".contains(sequence) 
            && sequence.Length >= 5); 

あなたがやっている何のための正規表現のない方がいいでしょう。

1

シーケンスを順番に並べる必要がある場合、探しているものは正規表現では達成できません。正規表現は文字のパターンマッチングのみを実行することができ、シーケンスに意味(注文など)を付けることはできません。