2011-04-07 2 views
0

이 종류의 날짜가 포함 된 텍스트가 있습니다 : 'Date Reported26/09/2010 08:22'이고 정규식으로 날짜를 추출하고 싶습니다. (이 세금은 날짜가 다르기 때문에 사용하고 있습니다. 이 정규식 :java -이 텍스트에서 정규 표현식을 사용하여 날짜를 찾을 수 없습니다.

private static String PATTERN_DATE_REPORTED = "Date Reported[0-9]{2}/[0-9]{2}/[0-9]{4} [0-9]{2}:[0-9]{2}"; 

와 같은 추출물을 수행

public String extractWithRegEx(String regextype, String input) { 
    String matchedString = null; 

    if (regextype != null && input != null) { 
     Matcher matcher = Pattern.compile(regextype).matcher(input); 
     if (matcher.find()) { 
      matchedString = matcher.group(0); 
      if (matcher.groupCount() > 0) { 
       matchedString = matcher.group(1); 
      } 
     } 
    } 
    return matchedString; 
} 
: extractWithRegEx는 다음과 같이 정의된다

if ((value = extractWithRegEx(PATTERN_DATE_REPORTED, text)) != null) { 
      DateFormat df = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); 
      try { 
       metadata.setDateReported(df.parse(value)); 
       System.out.println("Succesfully converted report date: "+metadata.getDateReported().toString()); 
      } catch (ParseException e) { 
       System.out.println("Exception occured when converting report date: "+ e.getMessage()); 
      } 
     }else{ 
      System.out.println("Date Reported not found by this regex"); 
     } 

문제점 : 위 정규식을 기반으로 한 날짜를 찾지 못합니다.

는 당신이 문제를 볼 수 ... 그것이 내가 뭔가 코드의 나머지 잘못된 생각이 날짜 텍스트하지만, 다른 유형을 찾기 위해 다른 정규식에 대한 작동하기 때문에extractWithRegEx가 올바른지 매우 확신?

답변

3

정규식에서 대괄호가 누락되었습니다.

private static String PATTERN_DATE_REPORTED = "Date Reported([0-9]{2}/[0-9]{2}/[0-9]{4} [0-9]{2}:[0-9]{2})"; 
+0

감사합니다. 나는 표정이 일치해야하지만 내 머리카락을 꺼내고 있었다. 정규식에서 대괄호가없는 그룹을 찾는 것은 어려울 것입니다. – gnomed

+0

정확하다고 생각되면 답변으로 표시하십시오. :) 당신의 프로젝트가 잘되기를 바랍니다. –

+0

이 사이트에서 내 정규식으로 입력을 확인하는 경우 : http://gskinner.com/RegExr/ 둥근 괄호 없이도 작동하는 것 같습니다 ... 매우 이상합니다 ... –

관련 문제