在neo4j中使用正则表达式

时间:2014-05-23 16:55:55

标签: regex neo4j cypher

我正在尝试在cypher WHERE子句中使用正则表达式。我想匹配节点的属性Text包含特定单词的节点,作为单词而不是其中的一部分。

MATCH (n:) WHERE n.Text =~ '\bword\b' return n;

虽然我的图表中存在包含单词“word”的节点,但此查询不会返回任何内容。 cypher是否允许使用标准正则表达式?正则表达式实现是否存在局限性?

1 个答案:

答案 0 :(得分:14)

您的查询中有3个问题:

  1. (n:)应为(n),因为您没有指定标签。
  2. 反斜杠必须通过前面的反斜杠进行转义。
  3. 正则表达式需要匹配整个属性值(我假设您的测试值相当长)。
  4. 此查询应该有效:

    MATCH (n)
    WHERE n.Text =~ '.*\\bword\\b.*'
    RETURN n;
    

    有关Regular Expressions in Neo4j

    的文档,请参阅此处