我正在使用企业版3.2,并且在使用正则表达式匹配operator =〜时遇到问题。从文档中,似乎我可以使用字符串正则表达式,这应该不区分大小写。但是,当尝试时,右手操作数全部为小写时,它无法匹配字符。附加屏幕截图以引用该问题。第一个屏幕截图显示,当我们使用与集合中相同的大小写时,查询将恢复文档。
像汤姆已经说的那样。你必须使用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')