2016-06-07 5 views
0

JSON 텍스트에서 String을 가져 오려고하는데, 어떤 이유로 든 계속 실패하고 있습니다. JSON 파서를 사용하지 않는 이유는 하나의 필드이기 때문에 정규 표현식을 사용하는 것이 더 쉬울 것이라고 생각했기 때문입니다.하지만 여기서는 약간의 정보가 누락 된 것 같습니다. 저는 여기에 달성하기 위해 노력하고있어입니다 :왜이 문자열에서 lookbehind가 실패합니까?

"텍스트":

json으로 문자열의 일부를 내가 얻으려고,

그리고 "를 여기에 텍스트를 삽입"내 코드 :

String p1 = "\"text\": \"((?<!\\\\)\"+)\""; 
      Pattern pa1 = Pattern.compile(p1); 
      Matcher m = pa1.matcher(s); 
      while (m.find()) { 
       System.out.println(m.group()); 
      } 

내 논리 :하지 '입니다
일치 아무것도 \ "다음에 (\") "

,

[^ \ "]을 사용하면 제대로 작동하는 것 같습니다. 그러나 텍스트 안에 따옴표가있을 수 있으며 텍스트 문자열이 실제로 끝났는지 확인하는 유일한 방법은 백 슬래시가 진행되지 않는 따옴표를 찾는 것입니다.

무엇이 여기에 있습니까? 준비

"text": "(([^\\"]|\\")+)" 

자바 : 당신은 lookbehinds 필요하지 않습니다

답변

0

...

이 하나를 시도

"\"text\": \"(([^\\\\\"]|\\\\\")+)\"" 

설명 here

하지만 lookbehinds를 원하는 경우 :

"text": "(([^"]|(?!<\\)")+)" 

설명 here

관련 문제