Регулярное выражение, которое проверяет наличие 2 конкретных слов - PullRequest
10 голосов
/ 19 августа 2010

Я ищу регулярное выражение, которое проверяет, содержит ли строка 2 конкретных слова. например содержит ли строка петуха или курицу.

Заранее спасибо!

Ответы [ 5 ]

20 голосов
/ 19 августа 2010

Выражение для совпадения rooster или hen как полное слово (т. Е. Не когда они являются частью более длинного, другого слова):

\b(rooster|hen)\b

Это мера безопасности, позволяющая избежать ложногоположительные с частичными совпадениями.

\b обозначает границу слова , которая является точкой (нулевой ширины) между символом в диапазоне «символов слова» ([A-Za-z0-9_]) и любой другой персонаж.В действительности вышеупомянутое:

  • соответствует "A chicken is either a rooster or a hen."
  • не соответствует "Chickens are either a roosters or hens." - но (rooster|hen) будет

В качестве примечания, чтобы разрешить множественное число, это будет сделано: \b(roosters?|hens?)\b

3 голосов
/ 19 августа 2010

Используйте | для альтернатив.В вашем случае это: (rooster|hen)

2 голосов
/ 19 августа 2010

Вы не упомянули, какой движок / язык вы используете, но в целом регулярное выражение будет (rooster|hen). | является оператором чередования .

1 голос
/ 20 августа 2017

то, что сработало для меня, это

(?:word|anotheer word)

, вот пример использования, я использовал его в своем приложении http://regexr.com/3gjb2

, если вы заинтересованы в понимании, как1008 * отличается от ( проверьте этот вопрос

Что делает (?: Делать в регулярном выражении

0 голосов
/ 07 июля 2018

У меня было похожее требование, но оно должно содержать только определенное слово (из списка), и в строке не должно быть других слов. Я должен был использовать ^(rooster|hen)$

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...