Регулярное выражение соответствует одному из двух слов

301

У меня есть вход, который может иметь только 2 значения appleили banana. Какое регулярное выражение я могу использовать, чтобы убедиться, что любое из двух слов было отправлено?

CyberJunkie
источник
2
На каком языке / среде это регулярное выражение реализовано? Во многих ситуациях регулярные выражения кажутся ненужными.
mickmackusa

Ответы:

467

Это будет делать:

/^(apple|banana)$/

чтобы исключить из захваченных строк (например $1, $2):

(?:apple|banana)
phlogratos
источник
43
Для некоторых будет полезно использовать это как группу без захвата. Использование также (?:apple|banna)будет соответствовать, но не добавит их в список захваченных строк (например $1, $2.. $N).
Doub1ejack
Привет быстрый вопрос, что мне делать, если я не хочу, чтобы applebanana соответствовала?
Гровер Рейес
Приведенное выше регулярное выражение соответствует яблоку и банану, но не соответствует яблочному банану.
phlogratos
99

Существуют разные движки регулярных выражений, но я думаю, что большинство из них будет работать с этим:

apple|banana
Смоак
источник
55
Если вы планируете поместить больше в своем регулярном выражении, вам необходимо поставить скобки вокруг слов, как это: (apple|banana).
Брайан Дж.
но как сделать это без учета регистра?
Nitish
Это установлено с re.IGNORECASEфлагом. Например:re.compile("(apple|banana)", re.IGNORECASE)
Троэльс Инддал
-8

Регулярное выражение /.txt|.tif/может использоваться в SiteScope для поиска «совпадения имен файлов» для монитора Каталога при поиске двух файлов разных типов - файлов, заканчивающихся на .txt или .tif

Sitescope богиня
источник