Orient-db正则表达式修饰符

时间:2014-06-11 13:37:30

标签: sql regex orientdb

我正在使用orient-db数据库,而且我遇到了正则表达式模式匹配的问题。我真的需要在请求中出现不区分大小写的修饰符,但不知何故它并不像我期望的那样工作。

查询:

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

以小写形式返回预期匹配。

每当我尝试添加修饰语时,在分隔符之外,即

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

我得到一个空集合。实际上,只要存在分隔符,查询就会返回一个空集合。

如果无法附加修饰符,我可能会更换每个修饰符' alpha' char到方括号中的表达式,即

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

但我对此解决方案并不满意。

2 个答案:

答案 0 :(得分:2)

不幸的是,无法在匹配运算符中为正则表达式指定修饰符。

现在好的解决方案是创建a custom function,在这里您可以使用JS regexp的全部功能。

但是我们肯定应该添加在 MATCHES 中指定修饰符的功能,你能create a feature request吗?

答案 1 :(得分:2)

使用Java不区分大小写的正则表达式修饰符(来自Pattern的特殊构造)在OrientDB 1.7.9中起作用 - 对于您的示例:

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

(另见:Pattern - Special Constructs

我也对相应的OrientDB问题添加了评论。