Regex를이 컨텍스트에서 사용하는 것에 대해 오해하고있는 경우 미리 사과드립니다.Regex를 사용하여 문자열에서 반복되는 값 검색
문자열에서 반복 필드를 검색하고 싶습니다.
TrendsJSONImpl {asOf = 금 3월 8일 그리니치 표준시 00시 04분 26초 2013 trendAt = 금 3월 8일 그리니치 표준시 00시 04분 26초 2013> 동향 = [TrendJSONImpl {이름 - 문제의 문자열은 다음과 같이 보입니다 TrendJSONImpl {name = '# ICanHonestlySay',> url = 'URL', query = '% 23ICanHonestlySay'}> TrendJSONImpl {이름 = '#BiggestLies', url = 'URL', 검색어 = '% 23TheBiggestLies'}, #EuTenhoUmaQuedaPor ', URL ='URL ', 쿼리 ='%의 23EuTenhoUmaQuedaPor '}> TrendJSONImpl {이름 ='#의 CitePessoasExclusivamenteSuas ', URL ='URL ', 쿼리 ='%의 23CitePessoasExclusivamenteSuas '}이에서
문자열, 나는 "이름"필드를 검색하고 목록에 추가하고 싶습니다. 이 문자열은 트위터의 트렌드 주제를 나타내며 트렌드를 생성하는 메소드가 호출 될 때마다 변경 될 수 있습니다. 나는 다음과 같이 이름 필드를 추출하기 위해 시도 여기에 이전 기사 다음
#TheBiggestLies
#ICanHonestlySay
#CitePessoasExclusivamenteSuas
-
이상적인 출력은 다음과 같을 것 코드 -
UI.model = new DefaultListModel();
String trendsInfo = //FUNCTIONWHICHRETRIEVESSTRING
Matcher m = Pattern.compile("{name=").matcher(trendsInfo);
Pattern p = Pattern.compile(
"{name='(.*),",
Pattern.DOTALL);
Matcher matcher = p.matcher(trendsInfo);
while (matcher.find()) {
for (int i = 0; i < 20; i++) {
String output = m.group(i);
UI.model.addElement(output);
System.out.println(m.group(i));
}
}
불행히도 이것은 불법 반복 예외를 반환하고 동일한 필드의 여러 쿼리를 처리하는 방법을 모르겠습니다. 이 문제에 도움을 주시면 감사하겠습니다.
시간 내 주셔서 감사합니다.
추가 팁 : ""{name = '(. *) "대신"{name ='(. *?) ' "'그래서 일치는 이름 뒤에 첫 번째 아포스트로피로 끝납니다. –