Модификаторы регулярных выражений Orient-db

Я работаю с базой данных orient-db, и у меня проблемы с сопоставлением шаблонов регулярных выражений. Мне действительно нужно, чтобы модификатор без учета регистра присутствовал в запросе, но почему-то он не работает, как я ожидаю.

Запрос:

select from UserAccounts where email MATCHES '^ther.*'

Возвращает ожидаемые совпадения в нижнем регистре.

Всякий раз, когда я пытаюсь добавить модификатор, внешние разделители, т.е.

select from UserAccounts where email MATCHES '\^ther.*\i'

Я получаю пустую коллекцию. На самом деле запрос возвращает пустую коллекцию всякий раз, когда присутствуют разделители.

Если нет возможности прикрепить модификаторы, я мог бы, вероятно, заменить каждый символ «альфа» выражением в квадратных скобках, т.е.

select from UserAccounts where email MATCHES "^[tT][hH][eE][rR].*"

Но я не очень доволен этим решением.


person PiotrC    schedule 11.06.2014    source источник


Ответы (2)


Использование модификатора регулярного выражения Java без учета регистра (из специальных конструкций Pattern) работает в OrientDB 1.7.9 - для вашего примера:

select from UserAccounts where email MATCHES '(?i)^ther.*'

(См. также: Шаблон — Специальные конструкции< /а>)

Я также добавил комментарий к соответствующей проблеме OrientDB.

person Buzz Killington    schedule 17.12.2014

К сожалению, нет возможности указать модификаторы для регулярных выражений в операторе совпадений.

На данный момент хорошим решением было бы создать пользовательскую функцию, где вы можете использовать всю мощь регулярных выражений JS.

Но мы определенно должны добавить возможность указывать модификаторы в MATCHES. запрос функции?

person enisher    schedule 12.06.2014