2014-07-16 4 views
-1

일부 구문 분석 중이며 일부 값을 추출해야하는 Json 텍스트 응답이 있습니다. 여기 내가 함께 일하는 것이있다. 나는이 세 값 (단지 값을 인용 부호 제외/json으로 값을 둘러싸고 쉼표)마지막 인용 부호 검색

을 캡처/꺼냈다 얻을 필요가

"createdOn": 1405536449291, 
"updatedOn": 1405536511282, 
"url": "https://www.myurl.com/path/v1/resource.json?parameter=test&parameter_2=\"JohnSmith\"", 
...etc 

: JSON 응답에는 내부

는이 같은 뭔가를
  • 1405536449291
  • 1405536511282
  • https://www.myurl.com/path/v1/resource.json?parameter=test&parameter_2=\"JohnSmith\"

Here is what I have so far. 자세히 알 수 있듯이, 나는 정말 가깝습니다. createdOnupdatedOn 값은 올바르지 만 문제는 "JohnSmith"주위의 첫 번째 따옴표로 인해 정규식이 완료되었다고 생각하게됩니다.

누락 된 문제에 대한 대안이 있습니까? 감사.

+7

가 왜 정규식보다는 JSON 파서를 사용하고 있습니다 :

이 경우

다음과 같은 패턴으로 해결 될 수있다? –

+1

GSON 라이브러리를 사용하여이를 Java Object로 변환 할 수 있습니다. – Braj

+0

@JonSkeet Regex를 사용하여 구문 분석을 수행했습니다. 일치하는 항목을 찾는 동안 루프가 진행되는 동안 값의 순서가 중요하므로 목록에 추가하고 있기 때문입니다. 다른 경우에는 "createdOn", "updatedOn"및 "url"값을 가져 와서 추가 할 수 있습니다 (항상 같은 순서 임) ... 미안하지만 아마 미안합니다. . – joshft91

답변

-1

패턴에서 \"을 제거하면됩니다.

그래서

(?:url|createdOn|updatedOn)\":\\s\"?([^\",]*) 

(?:url|createdOn|updatedOn)\":\\s\"?([^,]*) 

된다 그래서 쉼표 대신

편집 따옴표에서 정지 :

내가 지금 눈치 그에서 문자열 제공 한 코드가 잘못된 것 같습니다.

\"https://www.myurl.com/path/v1/resource.json?parameter=test&parameter_2=\"JohnSmith\" 

그러나뿐만 아니라 URL의 끝에 인용 부호가 있어야하기 때문에 그것은

\"https://www.myurl.com/path/v1/resource.json?parameter=test&parameter_2=\"JohnSmith\"\" 

말을해야 : 그것은 SAIS.

(?:url|createdOn|updatedOn)\":\\s\"?(.*?)\"?,