【问题标题】:RegEx matching for Neo4j numeric propertyNeo4j 数字属性的正则表达式匹配
【发布时间】:2012-09-11 17:18:57
【问题描述】:

我有几个节点共享一个具有数值的属性。我想使用正则表达式过滤此属性。这可以使用 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)”)

有什么想法吗?

【问题讨论】:

    标签: regex neo4j cypher


    【解决方案1】:

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

    否则,将支持自动投射,因此即使使用 Long.但不是现在。

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

      • 抱歉,我的问题并不清楚。问题更多的是类型转换(如何将数值 3 转换为字符串“3”,以便我可以应用正则表达式),而不是如何获得正确的正则表达式。上面的示例显示了一些 Neo4j 节点,而不是我要匹配的字符串...
      • Aaaand - 感谢@wfreeman 的贡献,它正在工作,请参阅 Neo4j 1.9-SNAPSHOT 中的 github.com/neo4j/community/pull/885
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-24
      • 2010-12-22
      • 1970-01-01
      • 1970-01-01
      • 2023-01-23
      • 1970-01-01
      相关资源
      最近更新 更多