// pattern 20xx/xx/xx, e.g. 2012/2/22
String Regex_Date_1 = "20\\d\\d/\\d{1,2}/\\d{1,2}";
String cell = "from 2011/7/31 to 2011/8/15 15:10-17:40,18:30-21:00";
System.out.println(cell);
System.out.println("--- a ---");
System.out.println(cell.matches(Regex_Date_1));
System.out.println("--- b ---");
Pattern p = Pattern.compile(Regex_Date_1);
Matcher m = p.matcher(cell);
while(m.find()){
System.out.println(m.group(0));
}
결과 :string.matches와 pattern.matches가 다른 결과를 얻는 이유는 무엇입니까?
string.matches는 false를 돌려 왜
from 2011/7/31 to 2011/8/15 15:10-17:40,18:30-21:00
--- a ---
false
--- b ---
2011/7/31
2011/8/15
? pattern.matches는 일치를 얻을 수 있습니까?
감사합니다. 내 질문은 -> System.out.println (cell.matches (". * ("+ Regex_Date + "). *")); –
나는 정말로 그렇게 생각하지 않는다. '. *'는 모든 것을 탐욕스럽게 매치 할 것이므로 나머지 정규 표현식은 무시 될 것이다. 원하는 것을 정확히 일치시키기 위해서는'. * '를 사용해야합니다. – asenovm