Поддерживает ли Man go Query on Apache CouchDB v2.3.1 символ \ D в селекторах регулярных выражений - PullRequest
1 голос
/ 06 февраля 2020

Я пытаюсь выполнить запрос man go на CouchDB v2.3.1 с селектором, как показано ниже ...

{
   "selector": {
      "title": {
         "$regex": "(?i).*someStuff.*OtherStuff\D*2.*"
      },
   },
}

, но постоянно получаю сообщение об ошибке: «При получении запроса произошла ошибка план". Когда я удаляю символ \ D из строки регулярного выражения, запрос выполняется нормально, поэтому я предполагаю, что он не удовлетворен символом \ D. Однако документация CouchDB (https://docs.couchdb.org/en/stable/api/database/find.html) , похоже, указывает на то, что оператор регулярного выражения поддерживает библиотеку PCRE, частью которой является \ D. Любые указатели о том, почему это не работает, будут высоко оценены.

1 Ответ

0 голосов
/ 06 февраля 2020

Из официальной документации мы видим, что оператор $regex описывается следующим образом:

Шаблон регулярного выражения для сопоставления с полем документа. Соответствует только тогда, когда поле является строковым значением и соответствует предоставленному регулярному выражению. Алгоритмы сопоставления основаны на библиотеке Perl совместимых регулярных выражений (PCRE). Дополнительные сведения о том, что реализовано, см. В разделе Регулярное выражение Эрланга

. По этой ссылке мы видим, что регулярные выражения Erlang поддерживают:

Generi c Типы символов

Другое использование backsla sh предназначено для указания универсальных c типов символов:

\ d
Любое десятичное число di git
\ D
Любой символ, который не является десятичным знаком di git

Среди других ...

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