使用以下正则表达式查询时,如何转义关键字中的特殊字符?

时间:2016-08-08 17:22:55

标签: regex neo4j cypher

使用以下正则表达式查询时,如何转义关键字中的特殊字符(')?我似乎无法找到放置\'序列的位置。

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

1 个答案:

答案 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()吗?