Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Neo4j Embedded中的整字正则表达式不起作用_Java_Regex_Neo4j_Spring Data Neo4j - Fatal编程技术网

Java Neo4j Embedded中的整字正则表达式不起作用

Java Neo4j Embedded中的整字正则表达式不起作用,java,regex,neo4j,spring-data-neo4j,Java,Regex,Neo4j,Spring Data Neo4j,正则表达式非常简单: WHERE t.name =~ "(?i).*\\baaaaaaaa\\b.*" 这在Neo4j服务器web控制台中工作。我收到了预期的结果 当我通过Java使用REST接口时,我必须将正则表达式更改为:“(?I)。*\\\baaaaaaa\\\b.*”(添加了反斜杠)。我不明白为什么,但它是有效的(再次返回预期结果) 相同的正则表达式不适用于嵌入式Neo4j: Caused by: Invalid input '': expected '\', ''', '"', 'b

正则表达式非常简单:

WHERE t.name =~ "(?i).*\\baaaaaaaa\\b.*"
这在Neo4j服务器web控制台中工作。我收到了预期的结果

当我通过Java使用REST接口时,我必须将正则表达式更改为:
“(?I)。*\\\baaaaaaa\\\b.*”
(添加了反斜杠)。我不明白为什么,但它是有效的(再次返回预期结果)

相同的正则表达式不适用于嵌入式Neo4j:

Caused by: Invalid input '': expected '\', ''', '"', 'b', 'f', 'n', 'r', 't' or Unicode (line 1, column 64)
MATCH ... WHERE t.name =~ "(?i)\ aaaaaaaa\ " ...
                                ^
请注意,
\b
不会显示在错误日志上(至少在Intellij控制台上)

更糟糕的是,“(?i.*\\baaaaaaa\\b.*”在嵌入式数据库和服务器数据库上都被正确解析(至少没有引发异常)。但是没有返回结果

重要考虑:

  • Neo4j 2.0
  • 我正在使用Spring数据(3.0)

尝试在所有3种情况下使用参数。那么它应该更加一致

WHERE t.name =~ {regexp}


params: {regexp: "(?i).*\\baaaaaaaa\\b.*"}
在Java中使用JSON与文字字符串以及Cypher解析器时,会发生不同的转义,因此工作时会有2或3个不同的解析器,每个解析器都有自己对转义的理解


在普通Java中,afaik是regexp的两个退格。

您在代码中的确切调用是什么?你能提供更多的背景吗?它起作用了。什么是魔法?顺便问一下,知道你是谁:-)你也能帮我做这个吗?