2011-07-26 2 views
0

Je souhaite valider la zone de texte Winforms avec regex.Recherche de Regex

L'exemple piqûre d'entrée:

ZX1 OR N?V OR 2L? OR ?55 (toute séquence de trois symboles des chaînes de longueur avec ou entre eux)

Qu'est-ce que vous le regex conseillerait?

MISE À JOUR: Essayer celui-ci, mais les coutures pour être ce n'est pas 100% correct

string text = "ZX1 OR N?V OR 2L? OR ?55"; 
Regex r = new Regex("([0-9A-Z?]{3} OR)*[0-9A-Z?]{3}"); 
+2

Veuillez clarifier. Demandez-vous une regex qui correspond 'ZXC' aussi' NV' avec n'importe quel caractère entre aussi 'BL' suivi par n'importe quel personnage? –

+0

Il pourrait être des caractères – Joper

+0

Pouvez-vous clarifier le terme "symbo"? Cela signifie-t-il "tout caractère autre qu'un espace"? Ou seulement certains caractères? –

Répondre

1
"^\\s*\\S{3}(?:\\s+OR\\s+\\S{3})*\\s*$" 

devrait travailler dans une variété de langues.

\\S 

correspond à un caractère non-espace, et

\\s 

correspond à l'un des caractères d'espace, de sorte que l'expression régulière ci-dessus un certain nombre de triplets de caractères non-spatiales séparées par la chaîne "OR" entouré par des espaces .

Les ^ et $ permettent de s'assurer que la chaîne entière correspond à la chaîne entière, de sorte que vous pouvez les supprimer si vous souhaitez trouver ce modèle dans une chaîne plus grande.

+0

celui-ci très proche mais renvoie vrai pour ZX1 OU N? V OU 2L? OU **? 5 ** – Joper

+0

@Joper, fixe. J'avais un '\\ S +' au lieu de '\\ S {3}'. –

0

Quelle est la liste des symboles possibles que vous pouvez avoir? Pouvez-vous avoir au plus un point d'interrogation? Cela correspondra à ce que vous avez donné, mais il correspondra également à plusieurs points d'interrogation.

([A-Z?]{3} OR)*[A-Z?]{3} 
+0

Question mise à jour – Joper

0

essayer ...

(([\w\S]{3}\s+)or\s+)+[\w\S]{3}