我正在使用企業版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);'如果你想有一個不區分大小寫的匹配。 –