2013-05-15 4 views
2

에서 그룹을 캡처하고 내가 즉, 구문 분석에 대한 텍스트의 숫자 부분을 캡처 할하고 출력하기 내가 정규식에 새로운 오전 자바

((\\d*1)st|(\\d*2)nd|(\\d*3)rd|(\\d+)th) 

지정된 텍스트에 서수를 udentify하기 위해 다음과 같은 정규 표현식을 처리하는 일치. 텍스트가 21 일 경우 Integer로 구문 분석 될 21을 캡처하려고합니다. 패턴이 존재하고 특정 그룹을 얻는지를 이해하기 위해 정규 표현식과 일치시키는 방법을 안다. 값을 추출하기 위해 표현식의 결과와 일치하는 그룹을 얻을 수있는 방법이 있습니까? 각면에 내가 추가 한 와일드 카드 - 중요한을 -

미리 감사

+1

참고로,'11th','12th'와'13th'을. 하지만 텍스트를 매치하고 있기 때문에 별 문제가되지 않습니다. – nhahtdh

답변

1

이 같은 비 캡처 그룹을 사용하도록 정규 표현식을 다시 작성할 수 있습니다 :

(?:(\\d*)(?:st|nd|rd|th)) 
+0

외부의 비 캡처 그룹을 버리십시오. 여기서 그룹화 할 필요는 없습니다. – nhahtdh

+0

감사의 말은 내가 필요로하는 것과 정확히 일치한다. – user1411335

0

에 나는 당신의 정규식을 단순화하고했습니다. 첫 번째 와일드 카드가 있습니까? 욕심쟁이 일치를 방지하여 첫 번째 자리를 제거합니다. 21st.

패턴/매처 접근법을 사용하면 그룹을 추출 할 수 있습니다.

Pattern p = Pattern.compile(".*?(\\d*(1st|2nd|3rd|th)).*"); 
String input = "21st March 2013"; 
Matcher m = p.matcher(input); 
if(m.matches()) 
    System.out.println(m.group(1)); 
+0

감사합니다. – user1411335