2011-10-23 1 views
3

데이터를 가져 오는 파일이 많고 다른 데이터로 둘러싸인 날짜 값이있는 벽에 부딪혔습니다. 나는 자바를 사용하고, 그리고 정규 표현식 나는 변수 string_i_currently_match에 대한 작품을 사용하고 난 지쳤어 때문에Java의 정규 표현식 : 다른 데이터로 둘러싸인 날짜 값 일치하기

String example_string_i_need_to_match = "data 10/12/2010, data, data"; 
String string_i_currently_match = "10/12/2010,"; 

Pattern pattern = Pattern.compile(

"^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\\d\\d(?:,)$" 

); 

Matcher matcher = pattern.matcher(fileString); 

boolean found = false; 
while (matcher.find()) { 
System.out.printf("I found the text \"%s\" starting at " + 
    "index %d and ending at index %d.\n", 
    matcher.group(), matcher.start(), matcher.end()); 
found = true; 
} 
if(!found){ 
    System.out.println("No match found."); 
} 

example_string_i_need_to_match은 아마도 그것의 일치를 필요로하지만,하지만 난 그것을 일치 얻을 수 없습니다. 모든 도움, 심지어 포인터는 크게 감사하겠습니다.

편집 : 명확히하기 위해 data, data과 일치하고 싶지는 않지만 그 자체의 날짜 색인을 얻으십시오.

답변

3

^ 기호는 문자열의 시작과 일치 $는 끝을 일치 :

은 여기에 작업을 참조하십시오. 패턴을 제거하면 패턴에서 문자열 내의 날짜를 일치시킬 수 있습니다. 이처럼

:

"(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\\d\\d(?:,)" 
0
String ResultString = null; 
try { 
    Pattern regex = Pattern.compile("\\b[0-9]{2}/[0-9]{2}/[0-9]{4}\\b"); 
    Matcher regexMatcher = regex.matcher(subjectString); 
    if (regexMatcher.find()) { 
     ResultString = regexMatcher.group(); 
    } 
} catch (PatternSyntaxException ex) { 
    // Syntax error in the regular expression 
} 

내가 뭔가를 간과하지 않는 한 이것은 당신의 날짜와 일치해야합니다. http://ideone.com/HETGU

2

이 당신의 날짜와 일치합니다 : 만 문자열의 시작 날짜를 일치 : 당신이 무엇을 게시에서

[\d]{2}/[\d]{2}/[\d]{4} 

, 당신은 하나 이상의 오류가했다.