Вот регулярные выражения для каждого из ваших запросов: -
ПРИМЕЧАНИЕ : Все регулярные выражения используют глобальные, многострочные и без учета регистра модификаторы
q=roadhouse blues
=> ^.*?(?:roadhouse.*?blues|blues.*?roadhouse).*$
-> демо q="roadhouse blues"
=> ^.*?(?:roadhouse blues).*$
-> демо q=roadhouse NOT blues
=> ^(?!.*?blues).*?roadhouse.*$
-> демо q=roadhouse OR blues
=> ^.*?(?:roadhouse|blues).*$
-> демо q=bob year:2014
=> ^.*?bob.*?in the year 2014.*$
-> демо q=bob year:2014-2020
=> ^.*?bob.*?in the year (?:201[4-9]|2020).*$
-> демо
Большинство из них следуют очень конкретному шаблону c и Вы должны быть в состоянии преобразовать запросы в эти регулярные выражения. Последние 2 могут потребовать некоторой утонченности, но вы должны объяснить конкретный c вариант использования этих 2 примерами.