我正在使用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].*"
但我对此解决方案并不满意。
答案 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问题添加了评论。