属性 列表中的正则表达式匹配项
Regex match items in property list
我的节点有一个 属性 字符串列表。
我想对列表中的字符串进行一些正则表达式匹配,例如匹配所有类似于 JVM_.*
.
的字符串
我知道我可以像这样进行精确匹配:
match (f:File)
where "JVM_OPTS" in f.env
return f.id,f.path,f.env
但是我在文档中没有看到任何允许我做类似
的东西
match (f:File)
where "JVM_.*" ~ f.env
return f.id,f.path,f.env
如果您希望列表中的 any
项与您的表达式匹配,并且 return 只有一个匹配才匹配文件,您可以这样做:
MATCH (f:File)
WHERE ANY(x IN f.env WHERE x =~ 'JVM.*')
RETURN f.id, f.env
╒══════╤══════════════════════════════╕
│"f.id"│"f.env" │
╞══════╪══════════════════════════════╡
│123 │["JVM_OPTS","JAVA_HOME","CWD"]│
└──────┴──────────────────────────────┘
如果您对 return 文件以及 return 列表中与您的表达式匹配的项目感兴趣,您可以改为这样做:
MATCH (f:File)
RETURN f.id AS id, [x IN f.env WHERE x =~ 'JVM.*'] AS env
╒════╤════════════╕
│"id"│"env" │
╞════╪════════════╡
│123 │["JVM_OPTS"]│
└────┴────────────┘
我的节点有一个 属性 字符串列表。
我想对列表中的字符串进行一些正则表达式匹配,例如匹配所有类似于 JVM_.*
.
我知道我可以像这样进行精确匹配:
match (f:File)
where "JVM_OPTS" in f.env
return f.id,f.path,f.env
但是我在文档中没有看到任何允许我做类似
的东西match (f:File)
where "JVM_.*" ~ f.env
return f.id,f.path,f.env
如果您希望列表中的 any
项与您的表达式匹配,并且 return 只有一个匹配才匹配文件,您可以这样做:
MATCH (f:File)
WHERE ANY(x IN f.env WHERE x =~ 'JVM.*')
RETURN f.id, f.env
╒══════╤══════════════════════════════╕
│"f.id"│"f.env" │
╞══════╪══════════════════════════════╡
│123 │["JVM_OPTS","JAVA_HOME","CWD"]│
└──────┴──────────────────────────────┘
如果您对 return 文件以及 return 列表中与您的表达式匹配的项目感兴趣,您可以改为这样做:
MATCH (f:File)
RETURN f.id AS id, [x IN f.env WHERE x =~ 'JVM.*'] AS env
╒════╤════════════╕
│"id"│"env" │
╞════╪════════════╡
│123 │["JVM_OPTS"]│
└────┴────────────┘