Как сопоставить несколько слов в регулярном выражении - PullRequest
13 голосов
/ 24 марта 2011

Просто простое регулярное выражение, я не знаю, как писать.

Регулярное выражение должно убедиться, что строка соответствует всем 3 словам. Я вижу, как сделать так, чтобы любой из 3:

/advancedbrain|com_ixxocart|p\=completed/

но мне нужно убедиться, что все 3 слова присутствуют в строке.

Вот слова

  1. advancebrain
  2. com_ixxocart
  3. р = завершено

Ответы [ 3 ]

16 голосов
/ 24 марта 2011

Использование подтверждений предпросмотра :

^(?=.*advancebrain)(?=.*com_ixxochart)(?=.*p=completed)

будет соответствовать, если присутствуют все три термина.

Возможно, вы захотите добавить \b рабочие границы вокруг вашего поискатермины, чтобы убедиться, что они совпадают как полные слова, а не подстроки других слов (например, advancebraindeath), если вам нужно избежать этого:

^(?=.*\badvancebrain\b)(?=.*\bcom_ixxochart\b)(?=.*\bp=completed\b)
4 голосов
/ 24 марта 2011
^(?=.*?p=completed)(?=.*?advancebrain)(?=.*?com_ixxocart).*$

Потратил слишком много времени на тестирование и доработку = / Ну да ладно .. Все равно выложу мой ответ

1 голос
/ 24 марта 2011

Используйте lookahead:

(?=.*\badvancebrain)(?=.*\bcom_ixxocart)(?=.*\bp=completed)

Заказ не имеет значения. Все три обязательны.

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