Je suis en train de programmer un algorithme de vocabulaire qui vérifie si un utilisateur a correctement saisi le mot. J'ai la situation suivante: La solution correcte pour le mot serait "part1, part2". L'utilisateur doit pouvoir entrer "partie1" (réponse 1), "partie2" (réponse 2) ou "partie1, partie2" (réponse 3). J'essaie maintenant de faire correspondre la chaîne donnée par l'utilisateur avec l'expression regex suivante, créée automatiquement:
^(part1|part2)$
Cela renvoie uniquement les réponses 1 et 2 comme correctes, tandis que la réponse 3 serait fausse. Je me demande maintenant s'il existe un opérateur similaire à | qui dit and/or
au lieu de either...or
.
Quelqu'un peut-il m'aider à résoudre ce problème?
Je suppose que vous voulez créer une regex de manière dynamique pour contenir d'autres mots que part1 et part2, et que vous souhaitez que l'ordre soit sans importance. Si oui, vous pouvez utiliser quelque chose comme ceci:
((^|, )(part1|part2|part3))+$
Correspondances positives:
part1
part2, part1
part1, part2, part3
Correspondances négatives:
part1, //with and without trailing spaces.
part3, part2,
otherpart1
'^(part1|part2|part1,part2)$'
est-ce que ça marche?
Est-ce que cela fonctionne sans alternance?
^((part)1(, \22)?)?(part2)?$
ou pourquoi pas ça?
^((part)1(, (\22))?)?(\4)?$
Le premier fonctionne pour toutes les conditions, le second pour tous sauf part2
(utilisant GNU sed 4.1.5)
Pas un expert en regex, mais vous pouvez faire ^((part1|part2)|(part1, part2))$
. En mots: "part 1 ou part2 ou les deux"
Ou vous pouvez utiliser ceci:
^(?:part[12]|(part)1,\12)$