Я хочу проверить, присутствуют ли все слова в строке selection
в другой строке. Там будет произвольное количество слов. Это не ИЛИ. Все слова ДОЛЖНЫ присутствовать в совпадении. Заказ не имеет значения. Например, когда selection
равно "John Zeni"
, оно должно совпадать с " John Paul Zeni"
, поскольку в сопоставителе есть и "John"
, и "Zeni"
. Если selection
было просто "John"
, то оно должно совпадать, но, поскольку существует несколько слов, все слова должны совпадать. Требуется решение регулярных выражений.
Вот что я попробовал:
selection = "John Zeni"
pattern = selection.split(" ").join("|")
# => "John|Zeni"
/#{Regexp.quote(pattern)}/
# => /John\|Zeni/
" John Paul Zeni".match(/#{Regexp.quote(pattern)}/)
# => nil
Почему это не совпадает? Проблема с Regexp.quote
Я думаю. Важно, чтобы оба слова совпадали в сопоставителе. Это также не должно совпадать:
" John Paul Zeni" =~ /(John|Zach)/
# => 1