4

我有几个节点共享一个具有数值的属性。我想使用正则表达式过滤此属性。这可以使用 Cypher 查询语言吗?

例子:

A { num: 3 }
B { num: 12 }
C { num: 532 }
D { num: 1423 }

如何获取num属性包含数字的所有节点3(应返回 A、C 和 D)。我试过类似的东西n.num =~ '3',但它会导致错误(“ java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String)”)

有任何想法吗?

4

2 回答 2

2

有了这个,您试图将 RegExp 应用于 Long 类型的属性,这是无效的。将节点属性定义为字符串将起作用,请参阅http://tinyurl.com/bqoq62q

否则,将支持自动投射,因此(在 Cypher 的未来版本中)where (node.num+'') =~ '3'即使使用 Long 也可以做到这一点。但是不是现在。

于 2012-09-11T21:30:55.270 回答
0

我对密码的东西不太清楚(根本不像正则表达式),但是你想要的正则表达式是这样的(假设你不能嵌套花括号;如果可以的话,正则表达式是这不可能)。

([A-Z]\s*\{[^\}]*num:\s*3\D[^\}]*\})

这将匹配一个大写字母,后跟一个左大括号,并且在任何右大括号之前有 num: 3。多亏了括号,整个事情都被记住了。

于 2012-09-11T18:46:23.870 回答