2014-05-11 5 views
2

정규식은 아주 간단합니다 내장 :전체 단어 정규식

WHERE t.name =~ "(?i).*\\baaaaaaaa\\b.*" 

이것은 Neo4j 서버 웹 콘솔에서 작동합니다. 예상 된 결과가 나타납니다.

자바를 통해 REST 인터페이스를 사용할 때 정규식을 "(?i).*\\\baaaaaaaa\\\b.*" (백 슬래시를 추가)으로 변경해야했습니다. 나는 이유를 이해하지 못하지만 작동합니다 (다시 예상되는 결과가 반환됩니다).

같은 정규식

임베디드 Neo4j 작동하지 않습니다 : 오류 로그에 표시되지 않습니다 (적어도 IntelliJ를 콘솔에)

Caused by: Invalid input '': expected '\', ''', '"', 'b', 'f', 'n', 'r', 't' or Unicode (line 1, column 64) 
MATCH ... WHERE t.name =~ "(?i)\ aaaaaaaa\ " ... 
           ^

\b있다.

임베디드 및 서버 데이터베이스 모두에서 "(?i).*\\baaaaaaaa\\b.*"이 올바르게 구문 분석됩니다 (적어도 예외는 발생하지 않음). 그러나 결과는 반환되지 않습니다.

중요 고려 사항 :

  • Neo4j 2.0
  • 내가 3의 경우 매개 변수를 사용하는
+1

제작중인 코드의 정확한 호출은 무엇입니까? 컨텍스트를 좀 더 제공 할 수 있습니까? – BtySgtMajor

답변

2

시도를 봄 데이터 (3.0)을 사용하고 있습니다. 그렇다면 좀더 일관성이 있어야합니다.

WHERE t.name =~ {regexp} 


params: {regexp: "(?i).*\\baaaaaaaa\\b.*"} 

그것은 당신이 자바 대 JSON 리터럴 문자열을 사용할 때 발생하는 다른 이스케이프, 그리고 그들 각각의 탈출의 자신의 이해를 가지고 직장에서 중 2 개 또는 3 개의 다른 파서 있도록 사이퍼 파서입니다.

일반 Java에서 afaik는 regexps의 두 백 스페이스입니다.

+0

효과가있었습니다. 마술은 무엇입니까? 그건 그렇고, 당신이 누구인지 아는 것 :-) 당신도 이걸로 저를 도울 수 있습니까? http://stackoverflow.com/questions/23547885/spring-data-neo4j-repository-composition-error-no-property-xxxx-found-for-type – pasemes