我为具有FirstName,LastName属性的用户提供节点.现在我想从两个站点的两个属性中搜索一些值.让我来解释一下.
FirstName LastName
--------- --------
Manish Pal
Pal Dharmesh
Rajpal Yadav
sharma shreepal
Run Code Online (Sandbox Code Playgroud)
现在我想搜索哪个节点的名字或姓氏包含'pal'.我写了这样的查询.
START users=node(*)
WHERE (users.FirstName =~ '(?i)pal.*' OR users.LastName =~ '(?i)pal.*')
RETURN users;
Run Code Online (Sandbox Code Playgroud)
它只给我2个节点,但我希望所有节点都包含'pal'
如果我这样试试
START users=node(*)
WHERE (users.FirstName =~ '(?i)*.pal.*' OR users.LastName =~ '(?i)*.pal.*')
RETURN users;
Run Code Online (Sandbox Code Playgroud)
它给了我以下错误.
"PatternSyntaxException"
悬空元字符' '近索引4(?i).ant.^*
我已在此处设置示例供您参考.
谢谢.
第二个查询包含无效的正则表达式语法.我想你的意思是:
START users=node(*)
WHERE (users.FirstName =~ '(?i).*pal.*' OR users.LastName =~ '(?i).*pal.*')
RETURN users
Run Code Online (Sandbox Code Playgroud)
请注意帖子中查询的不同之处:
'(?i)*.pal.*' 在你的帖子中,和 '(?i).*pal.*' 在上面的查询中星号*表示我之前的表达式[星号]可能出现任意次数,包括零.但是(?i)没有正则表达式,只是一个忽略实际表达式的修饰符.我想你的意思.*.正则表达式.匹配任何字符,星号允许任何字符出现任意次数.
因此,'(?i).*pal.*'说:[忽略大小写] <任意字符的任意数量> <确切的字符序列:"pal"> <任意字符的任意数>
上面的查询为我返回了四个结果:
users.FirstName | users.LastName
---------------------------------
sharma | shreepal
Rajpal | Yadav
Pal | Dharmesh
Manish | Pal
Run Code Online (Sandbox Code Playgroud)
如果我理解你的话,那就是你想要的.