2014-12-30 2 views
0

"participantIdentities"& 표현식과 summonerID로 설정 한 변수 사이에있는 모든 문자를 결합하려고합니다. 나는 matchinfo라는 문자열에서 모든 정보를 추출하고있어, 그리고 문자열은 다음과 같이 진행됩니다두 문자열 사이의 Java 컴파일 패턴

"participantIdentities":[{"participantId":1,"player":{"summonerId":36889900,"summonerName":"intalan","matchHistoryUri":"/v1/stats/player_history/NA1/51395230","profileIcon":744}},{"participantId":2,"player":{"summonerId":32741714,

을 그리고 그것은 계속 유지합니다. summonerID가 변경되므로 변수로 설정해야합니다. 지금,이 내가 지금까지 무엇을 가지고 32741714.

로 설정되어 :

Pattern pattern2 = Pattern.compile(
    "\"participantIdentities\": (.*?)"+summonerID+"", Pattern.DOTALL); 

Matcher matcher2 = pattern2.matcher(matchinfo); 

if (matcher2.find() == true) { 
    participantIDinformation = matcher2.group(1).toString(); 
    System.out.println(participantIDinformation); 
} 

나는 그것이 participantID과 summonerID 사이에있는 모든 정보를 반환하는 기대하지만 그것은 작동하지 않습니다.

+0

무엇을 반환합니까? –

+0

matcher2.find()가 false를 반환하므로 패턴을 전혀 인식하지 못합니다. – Yayahii

+2

JSON 파서를 사용하십시오. 선택할 수있는 좋은 JSON 파서가 수없이 많습니다. 정규식으로 구문 분석하지 마십시오. – nhahtdh

답변

1

정규식에 \"participantIdentities\": 뒤에 공백이 있지만 사용자 데이터에는 없습니다.

+0

실제로 Java 정규 표현식 패턴은 공백을 무시하지 않고 패턴의 공백으로 취급합니다. – Wickoo

+0

하하, 그랬어! 이 바보 같은 실수를 지적 주셔서 감사합니다 :) – Yayahii

관련 문제