Regex: как сопоставить каждое слово из группы в любом порядке? - PullRequest
0 голосов
/ 10 ноября 2019

Допустим, я хочу найти слова hamburger и steak. Регулярное выражение должно соответствовать / возвращать истину только тогда, когда оба слова найдены, в любом порядке. то есть

Возвращается true

I like hamburgers and steak
I like steak and hamburgers

В то время как они возвращают false, так как только одно из слов соответствует

I like hamburgers
I like stake

Надеюсь, кто-то можетпомоги мне с этим. В идеале это простое решение, так как эти запросы будут генерироваться PHP, и пользователь может вводить неограниченное количество слов для поиска (в отличие от этого примера, где используются только 2), поэтому сложные решения могут быть сложными для реализации. / debug

В любом случае, заранее спасибо за любую помощь:)

1 Ответ

0 голосов
/ 10 ноября 2019

Попробуйте следующий шаблон:

^.*\b(?:hamburgers\b.*\bsteak|steak\b.*\bhamburgers)\b.*$

Это будет соответствовать ключевым словам hamburgers и steak в любом порядке.

Демо

...