我有一个像这样的密码片段:
where my_node.my_column =~ ("(?i).*\\." + {my_var})
这个想法是匹配一个类似路径的字符串。例如,my_column
的值可能为db.schema.MY_TABLE
,我想在Python cypher语句中传递“My_TaBlE”。这应该匹配。
但是,我在该声明中收到了Cypher错误;具体来说,它不喜欢最后的“。”在正则表达式中。这就像我没有正确地逃避它。文档说Java regexp是在幕后使用的。
现在我正在使用:
where my_node.my_column =~ ('(?i).*' + '.' + {table_name})
这似乎有效,但我不能说老是否匹配任何字符或字面句字符。
如果重要,我的Cypher查询是在Python文档字符串中。
我怎样才能逃脱这段时期?有没有更好的方式来表达我想要的东西?
答案 0 :(得分:0)
在Python string literals中,反斜杠(“\”)字符用于启动转义序列。特别是,“\\”是反斜杠字符本身的转义序列。
因此,为了生成一个包含2个相邻反斜杠字符的字符串文字,实际上需要在代码中使用4个相邻的反斜杠字符。例如,您的Python代码段应如下所示:
where my_node.my_column =~ ("(?i).*\\\\." + {my_var})