使用正则表达式运算符=〜时,ArangoDB与不区分大小写的文档不匹配

问题描述 投票:2回答:3

我正在使用企业版3.2,并且在使用正则表达式匹配operator =〜时遇到问题。从文档中,似乎我可以使用字符串正则表达式,这应该不区分大小写。但是,当尝试时,右手操作数全部为小写时,它无法匹配字符。附加屏幕截图以引用该问题。第一个屏幕截图显示,当我们使用与集合中相同的大小写时,查询将恢复文档。 enter image description here

这是第二个屏幕截图,显示不区分大小写的正则表达式无法提取记录。 enter image description here

arangodb case-insensitive aql
3个回答
1
投票

像汤姆已经说的那样。你必须使用REGEX_TEST(text, search, caseInsensitive)caseInsensitive设置为true(参见docs)。

运营商=~只是REGEX_TEST(text, search, false)的一小部分。


0
投票

实际上你必须使用REGEX_TEST。这就是你如何做到这一点的例子。

FOR doc IN contacts 
    FILTER REGEX_TEST(doc.name, 'anystring_representing_regex', true)
RETURN doc

0
投票

当我遇到这个问题时,我偶然发现了这个问题,但是还有另一个解决方案。只想将它交给想要使用=〜运算符而不是REGEX_TEST()函数的人。

例:

FOR doc in contacts
FILTER doc.name =~ '(?i)raM'
RETURN doc

另一种解决方案也可以(未经测试):

FOR doc in contacts
FILTER LOWER(doc.name) == LOWER('raM') 
© www.soinside.com 2019 - 2024. All rights reserved.