Regex correspond à l'un des deux mots

301

J'ai une entrée qui ne peut avoir que 2 valeurs appleou banana. Quelle expression régulière puis-je utiliser pour m'assurer que l'un des deux mots a bien été soumis?

CyberJunkie
la source
2
Dans quelle langue / environnement cette expression régulière est-elle mise en œuvre? Regex semble être une surcharge inutile dans de nombreuses situations.
mickmackusa

Réponses:

467

Cela fera:

/^(apple|banana)$/

à exclure des chaînes capturées (par exemple $1, $2):

(?:apple|banana)
phlogratos
la source
43
Pour certains, l'utiliser comme un groupe non capturant sera utile. L'utilisation (?:apple|banna)correspondra non plus, mais ne les ajoutera pas à la liste des chaînes capturées (par exemple $1, $2.. $N).
doub1ejack
Salut question rapide, que dois-je faire si je ne veux pas que applebanana corresponde?
Grover Reyes
Le regex ci-dessus correspond à la pomme et à la banane, mais ne correspond pas à la pommebanana.
phlogratos
99

Il existe différents moteurs regex mais je pense que la plupart d'entre eux fonctionneront avec ceci:

apple|banana
smoak
la source
55
Si vous prévoyez de mettre plus dans votre regex, vous aurez besoin de mettre entre parenthèses autour de vos mots, comme ceci: (apple|banana).
Brian J
mais comment le rendre insensible à la casse?
Nitish
C'est réglé avec le re.IGNORECASEdrapeau. Par exemple:re.compile("(apple|banana)", re.IGNORECASE)
Troels Ynddal
-8

Une expression régulière /.txt|.tif/peut être utilisée sur SiteScope pour localiser la «correspondance de nom de fichier» pour le moniteur d'annuaire lors de la recherche de deux types de fichiers différents - fichiers se terminant par .txt ou .tif

Déesse Sitescope
la source