2013-08-24 2 views
0

문자열이 있습니다. "12.2A12W99.0Z0.123Q9" 3 개 그룹을 찾아야합니다. (double 또는 int) (비 연속) (double 또는 int) 샘플의 경우, 나는이 일이하고 싶은 것 :
matcher.group (1) = "12.2"
matcher.group (2) = "A"
matcher.group (3) = "12"정수 또는 double에 대한 정규식

나의 현재 정규식 "^ (\ d +) (\ D) (\ d +)" 그래서 그룹 (\ d +)을 정수 또는 2 진수와 일치하는 것으로 변경하려고합니다.

나는 정규 표현식을 전혀 이해하지 못한다.

+3

웹 반환 검색하는 첫 번째 항목 : [정규 표현식으로 부동 소수점 숫자를 매칭 (http://www.regular-expressions.info/floatingpoint.html) 그리고 그것은 무엇 귀하의 질문에 –

답변

1

아래 코드를 시도하십시오. - 정규식은 숫자와 일치합니다. 또한 소수점을 맞추려면 다음이 필요합니다.

Pattern.compile("\\d+\\.\\d+") 

private Pattern p = Pattern.compile("\\d+(\\.\\d+)?"); 

. 이것이 이스케이프 처리되지 않은 경우 모든 문자와 일치하므로 이스케이프 처리됩니다.

참고 :이 예에서는 사용자가 가지고있는 소수점 이하의 숫자 만 찾습니다.

private Pattern p = Pattern.compile("\\d+(\\.\\d+)?"); 

public void testInteger() { 
    Matcher m =p.matcher("10"); 

    assertTrue(m.find()); 
    assertEquals("10", m.group()); 
} 

public void testDecimal() { 
    Matcher m =p.matcher("10.99"); 

    assertTrue(m.find()); 
    assertEquals("10.99", m.group()); 
} 
+2

응답 ':-'? 나는 그처럼 입을 회전시킬 수 없다. –

+0

정말 고마워요.하지만 복식뿐만 아니라 정수와 복식 모두에 대해 amtch하고 싶습니다. 거기에 정규식을 작성하는 방법이 있나요? – zvory

+0

방금 ​​편집 한 대답과 내 의견을 알려주십시오 –