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


301

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


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

Ответы:


467

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

/^(apple|banana)$/

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

(?:apple|banana)

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.