2009-08-04 9 views
2

Ich möchte eine C# regex, um festzustellen, ob eine Zeichenfolge 5 + Zeichen innerhalb einer definierten Sequenz enthält.RegEx Match Sequence von 5 Zeichen

Beispiel: Wenn die Sequenz das Alphabet wäre, wäre 'ghijk' wahr, während 'lmn' falsch wäre.

Edit: Die Reihenfolge muss in Ordnung sein. Aus dem obigen Beispiel würde "ghijz" false zurückgeben.

+0

Muss der Inhalt der Zeichenfolge sequenzielle Elemente aus der Sequenz oder nur irgendwelche Elemente enthalten? Mit anderen Worten, wenn die Sequenz das Alphabet wäre, würde die Zeichenfolge "pdrqa" übereinstimmen? –

+0

pdrqa wäre falsch, da es nicht der Reihenfolge der Sequenz entspricht. – Thad

Antwort

7

Sie brauchen nicht unbedingt einen regulären Ausdruck, dies zu erreichen:

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

Es sei denn, ich bin fehlt, was Sie hier zu erreichen versuchen.

+0

Genau das, was ich getan hätte ... Ein paar kleinere Probleme wurden behoben, wie das Hinzufügen eines Null-Checks und Methoden-Großschreibung für C# /. NET. –

+0

Ich möchte es eine Regex sein, da der Rest des Codes Regex ist. – Thad

+2

Ich kann Ihren Wunsch nach Konsistenz verstehen, aber in diesem Fall denke ich, dass die Regex-freie Lösung sauberer und einfacher ist. –

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

Dies entspricht einer beliebigen Zeichenfolge mit 5 Buchstaben oder mehr, aber das OP benötigt die Zeichenfolge, um mit einem Segment der Sequenz übereinzustimmen, was bedeutet, dass die Zeichenfolge in sequentieller Reihenfolge sein muss. –

2

Verwenden Contains() anstelle eines RegEx:

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

Du bist besser ohne Regex aus für das, was Sie tun.

1

Wenn die Reihenfolge in Ordnung sein muss, dann kann das, was Sie suchen, nicht mit regulären Ausdrücken erreicht werden. Reguläre Ausdrücke können nur Mustervergleiche für Zeichen durchführen und können keine Bedeutung (z. B. eine Reihenfolge) für die Sequenz angeben.