2013-03-31 3 views
0

숫자의 모든 인스턴스를 찾고 쉼표 (공백 없음) 다음에 문자열의 임의 개수의 문자를 찾으려합니다. 내가 찾고 있던 모든 인스턴스를 찾을 수있는 정규 표현식을 얻을 수 있었지만 모든 것을 함께 인쇄하지 않고 개별적으로 인쇄하려고합니다. 정규식을 처음 접했을 때 패턴이 잘못되었을 수도 있습니다.Java에서 regex를 사용하여 한 문자열에서 여러 부분 문자열을 찾으려면 어떻게합니까?

String test = "1 2,A 3,B 4,23"; 
Pattern p = Pattern.compile("\\d+,.+"); 
Matcher m = p.matcher(test); 
while(m.find()) { 
    System.out.println("found: " + m.group()); 
} 

이가 인쇄 무엇 :

이 내 코드입니다

found: 2,A 3,B 4,23 

이 내가 인쇄를 원하는 것입니다 : 사전에

found: 2,A 
found: 3,B 
found: 4,23 

감사합니다!

String values = test.split(' '); 

for (String value : values) { 
    if (value.contains(",") { 
     System.out.println("found: " + value); 
    } 
} 

답변

3

후 쉼표없이 아무것도 무시 당신은 쉬운 길을 타고 공간으로 분할 할 수

Pattern p = Pattern.compile("\\d+,.+?(?= |$)"); 
+0

작품 완벽하게이 쉽게 보이지 않는 당신 – Archer

3

이 정규식을 시도 "임의의 문자 수"는 끝나기로되어 있습니다. 그것이 그대로, 그것은 문자열의 끝에서 끝납니다; 샘플 출력에서 ​​첫 번째 공간에서 끝내고 싶습니다.

이 패턴을 시도해보십시오 "\\d+,[^\\s]*"

+0

감사합니다,하지만 나중에 정규식이 더 적합 좀 더 조건을 추가해야합니다. 그래도 감사합니다! – Archer

+0

Yout이 4 분 @pickypg에 나를 이길 –

+1

@Archer 그렇다면이 질문에이 조건을 추가하는 것이 좋을 것이라고 생각합니다. 따라서 사람들은 대답하기 전에 명심해야합니다. –

1

당신은 분명히 문은 어디 요구 사항에서 제외 무엇 :

관련 문제