在cypher查询中使用正则表达式进行错误匹配

时间:2013-09-05 09:57:03

标签: regex neo4j cypher

我使用Cineasts Movies & Actors (12.3MB) dataset,我希望从凯文·培根和他所扮演的所有美国演员那里获得路径,他们也曾参与戏剧电影。所以我做了这个cypher查询,它不返回任何行:

START KB=node(759)

MATCH (KB)-->(m1)<--(p)-->(m2)

WHERE HAS(p.birthplace) AND p.birthplace =~ ".*(USA|United States)" AND m2.genre = "Drama"

RETURN m1, p, m2

但是如果我摆脱了正则表达式(p.birthplace = "USA"),它会返回一个结果。怎么了?初始查询应至少返回一行。我正在使用Neo4j 1.9.2。

1 个答案:

答案 0 :(得分:2)

实际上这比neo4j或cypher更加REGEX。 你缺少了parantheses。 (美国|美国)指美国或美国,bc the正在对两个字符A和U进行OR运算。尝试((美国)|(美国))

编辑: PS,试试这个网站获得一些很棒的正则表达式支持和测试http://gskinner.com/RegExr/