2009-08-04 9 views
2

Je voudrais une C# regex pour déterminer si une chaîne contient 5+ caractères dans une séquence définie. Exemple: Si la séquence était l'alphabet, 'ghijk' serait vrai, alors que 'lmn' serait faux.Séquence de correspondance RegEx de 5 caractères

Éditer: La séquence doit être dans l'ordre. de l'exemple ci-dessus 'ghijz' retournerait false.

+0

Le contenu de la chaîne doit-il contenir des éléments séquentiels de la séquence, ou seulement des éléments? En d'autres termes, si la séquence était l'alphabet, la chaîne "pdrqa" correspondrait-elle? –

+0

pdrqa serait faux car il ne correspond pas à l'ordre de la séquence. – Thad

Répondre

7

Vous ne devez pas nécessairement une expression régulière pour y parvenir:

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

À moins que je suis absent ce que vous essayez d'accomplir ici.

+0

Juste ce que j'aurais fait ... Correction de quelques problèmes mineurs tels que l'ajout d'une vérification nulle et la capitalisation de la méthode pour C# /. NET. –

+0

Je voudrais que ce soit une regex puisque le reste du code est regex. – Thad

+2

Je peux comprendre votre désir de cohérence, mais dans ce cas, je pense que la solution sans regex est plus propre et plus simple. –

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

Cela correspond à n'importe quelle chaîne de 5 lettres ou plus, mais l'OP a besoin de la chaîne pour correspondre à un segment de la séquence, ce qui signifie que la chaîne doit être dans un ordre séquentiel. –

2

Utilisation Contains() au lieu d'un RegEx:

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

Vous êtes mieux sans regex pour ce que vous faites.

1

Si la séquence doit être dans l'ordre, alors ce que vous recherchez ne peut pas être accompli avec des expressions régulières. Les expressions régulières peuvent uniquement effectuer une correspondance de motif sur des caractères et ne peuvent pas placer de sens (comme un ordre) sur la séquence.

Questions connexes