Преобразование строки параметров запроса в выражение регулярного выражения - PullRequest
1 голос
/ 06 апреля 2020

Я создаю приложение с expressjs и mon goose, я пытаюсь построить конечную точку поиска, как указано здесь Spotify api https://developer.spotify.com/documentation/web-api/reference/search/search/

У меня проблема с выяснением того, как преобразовать заданные параметры запроса в регулярное выражение для соответствия требуемым результатам. моя конечная точка выглядит следующим образом example.com/search?q=searchText

Требования:

  • q=roadhouse blues требуется, чтобы совпадение всех результатов содержало название Roadhouse и блюз в своем названии. например: соответствует как «Блюз Роуз Хаус», так и «Роуз Хаус Блюз».
  • q="roadhouse blues", если указаны цитаты, оно должно соответствовать точному слову. Например: соответствует «My Roadhouse Blues», но не «Roadhouse of the Blues»
  • q=roadhouse NOT blues соответствует всем результатам, в названии которых присутствует Roadhouse, но не блюз.
  • q=roadhouse OR blues соответствует всем результатам, для которых в названии указана дорожка или блюз.
  • q=bob year:2014 соответствует результатам, содержащим имя Боб, и в 2014 году
  • q=bob year:2014-2020 соответствует результатам, содержащим имя Боб, и за год между 2014 и 2020 гг.

1 Ответ

1 голос
/ 06 апреля 2020

Вот регулярные выражения для каждого из ваших запросов: -

ПРИМЕЧАНИЕ : Все регулярные выражения используют глобальные, многострочные и без учета регистра модификаторы

  • 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 примерами.

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