【发布时间】:2014-09-18 09:27:37
【问题描述】:
我正在尝试匹配 Neo4j 数据库中的节点。节点有一个名为“name”的属性,我在 Cypher 中使用正则表达式来匹配它。我只想匹配整个单词,所以如果我提供字符串“java”,“javascript”不应该匹配。如果要匹配的字符串是多个单词,即“java script”,我将执行两个单独的查询,一个用于“java”,一个用于“script”。
这是我目前所拥有的:
match (n) where n.name =~ '(?i).*\\bMYSTRING\\b.*' return n
这可行,但它不适用于某些特殊字符,如“+”或“#”。所以我无法搜索“C++”或“C#”等。上面代码中的正则表达式只是使用 \b 作为单词边界。它也在转义它,因此它可以正常工作。
我尝试了这篇帖子的某些版本:regex to match word boundary beginning with special characters,但它并没有真正起作用,也许我做错了什么。
如何使用 Cypher 和 Neo4j 中的特殊字符进行这项工作?
【问题讨论】: