我正在使用企业版3.2并且与正则表达式匹配运算符=〜有问题。从文档看来,我可以使用字符串正则表达式,而且应该不区分大小写。但是,如果尝试过,则右手操作数全部小写时不能匹配字符。附上截图以指出问题。这第一个屏幕截图显示,当我们使用与集合中相同的大小写时,该查询会回调该文档。 当使用正则表达式运算符时,ArangoDB与不区分大小写的文档不匹配=〜
以下是显示不区分大小写的正则表达式无法拉出记录的第二个屏幕截图。
我正在使用企业版3.2并且与正则表达式匹配运算符=〜有问题。从文档看来,我可以使用字符串正则表达式,而且应该不区分大小写。但是,如果尝试过,则右手操作数全部小写时不能匹配字符。附上截图以指出问题。这第一个屏幕截图显示,当我们使用与集合中相同的大小写时,该查询会回调该文档。 当使用正则表达式运算符时,ArangoDB与不区分大小写的文档不匹配=〜
以下是显示不区分大小写的正则表达式无法拉出记录的第二个屏幕截图。
像汤姆已经说过。您必须使用REGEX_TEST(text, search, caseInsensitive)
与caseInsensitive
设置为true
(请参阅docs)。
运营商=~
只是REGEX_TEST(text, search, false)
的简称。
的确,您必须使用REGEX_TEST。例如,你就是这样做的。
FOR doc IN contacts
FILTER REGEX_TEST(doc.name, 'anystring_representing_regex', true)
RETURN doc
当我遇到这个问题时,偶然发现了这个线程,但也有另一个解决方案。只是想把它给那些想要使用=〜运算符而不是REGEX_TEST()函数的人。
实施例:
FOR doc in contacts
FILTER doc.name =~ '(?i)raM'
RETURN doc
另一种解决方案也可(未测试):
FOR doc in contacts
FILTER LOWER(doc.name) == LOWER('raM')
我不阅读文档以状态=〜应CASEINSENSITIVE - 我它表明你必须使用'REGEX_TEST(text,regexp,true);'如果你想有一个不区分大小写的匹配。 –