使用以下正则表达式查询时,如何转义关键字中的特殊字符(')?我似乎无法找到放置\'序列的位置。
WITH ["Freda's"] AS keywords
WITH REDUCE(s = [], x IN keywords | s + ('(?i).*' + x + '.*')) AS regexps
MATCH (p:Product)
WHERE all(x IN regexps WHERE p.name =~ x)
RETURN p
答案 0 :(得分:0)
您的Cypher查询确实按书面形式运行,因此这可能是您使用编程语言如何在WITH
子句中生成字符串的问题。
实际上,无论如何,你不应该以你展示的方式传递keywords
数组。更高效和安全的方法(也可能有助于解决您的问题)是将数组作为parameter传递。无论您使用何种语言,参数值都只是一个本机数组。
如果您将keywords
数组作为参数传递,则查询将为:
WITH REDUCE(s = [], x IN {keywords} | s + ('(?i).*' + x + '.*')) AS regexps
MATCH (p:Product)
WHERE ALL(x IN regexps WHERE p.name =~ x)
RETURN p;
顺便说一下,您确定要使用ALL()
代替ANY()
吗?