2016-11-23 2 views
1

Je voudrais que mon regex affecte ces valeurs et seulement celles-ci: 1a, 1b, 2a, 2b, 3a, 3b, n. Il semble que mon regex ne fonctionne pas: "[([1-3] [a-b]) (n)]". Pourquoi ne voit-il pas le crochet contenant [1-3] [a-b] et comment cette expression devrait-elle fonctionner correctement?Affectation d'une regex incorrecte

+0

Les supports externes ont ruiné votre regex complètement. Essayez 's.matches (" [1-3] [ab] | n ")'. Voulez-vous dire que vous voulez faire correspondre une chaîne égale à «n» comme l'une des alternatives? Ou '2n',' 1n'? –

+0

Juste n. Mais enlever les supports externes a aidé et maintenant cela fonctionne correctement! Merci beaucoup! :) – Virginia

+0

Donc, vous voulez faire correspondre '1an'? '([1-3] [a-b]) (n)' correspondra '1an',' 3bn' ... Je veux dire, juste enlever les crochets extérieurs ne m'aidera pas. Voulez-vous dire mon regex ci-dessus travaillé? –

Répondre

1

Je voudrais mon regex pour les affecter et seulement ces valeurs: 1a, 1b, 2a, 2b, 3a, 3b, n.

Cela signifie, vous devez utiliser

.matches("[1-3][ab]|n") 

Voir la regex demo

Dans votre modèle, les crochets extérieurs ont créé une classe de caractères et les internes seulement ont été traités comme unions et "[([1-3][a-b])(n)]" correspondait juste 1 caractère (un (, ou 1 à 3 chiffre, ou a à b lettre, etc.

+0

Heureux que cela a fonctionné pour vous. S'il vous plaît envisager d'accepter la réponse (voir [Comment accepter les réponses SO] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)). –