<td headers="hafasOVStop" class="station"><div><div style="float:right; vertical-align:middle;"></div>Paris Nord</div><div>London St. Pancras International</div></td><td class="date" headers="hafasOVDate">10.01.11<br />11.01.11</td><td headers="hafasOVTime" class="time">
<div>
<div class="planed">
22:58 dep<br />
07:56 arr
</div>
<div class="prognosis"> </div>
</div>
</td>
<td headers="hafasOVDuration" class="duration">
9:58
위와 같은 html 문서에서
Paris Nord
London St. Pancras International
10.01.11
11.01.11
22:58 dep
07:56 arr
9:58
빨간것만 필요해서 이렇게 정규식 패턴을 적용했거든요?
String regex_dep_time = "([0-9][0-9]:[0-9][0-9])(?= dep)"; //출발시간
String regex_arr_time = "([0-9][0-9]:[0-9][0-9])(?= arr)"; //도착시간
String regex_duration = "([0-9 0-9]:[0-9][0-9])(?! )"; //걸리는시간
String regex_dep_cityname = "([a-z A-Z])+(?=</div><div>)"; //출발도시
String regex_arr_cityname = "([a-z A-Z .])+(?=</div></td>)"; //도착도시
String regex_dep_date = "([0-9 . ])+(?=<br />)" ; //출발날짜
String regex_arr_date = "([0-9 . ])+(?=</td><td)" ; //도착 날짜 만약 없으면 출발날짜와 동일
//regex_dep_time
Pattern p_dep_time = Pattern.compile(regex_dep_time, Pattern.CASE_INSENSITIVE);
Matcher m_dep_time = p_dep_time.matcher(line);
if(m_dep_time.find())
{
r.set_dep_time(m_dep_time.group()); //dep_time을 저장해준다
//Log.d("location", r.get_dep_time());
}
//regex_arr_time
Pattern p_arr_time = Pattern.compile(regex_arr_time, Pattern.CASE_INSENSITIVE);
Matcher m_arr_time = p_arr_time.matcher(line);
if(m_arr_time.find())
{
r.set_arr_time(m_arr_time.group()); //arr_time을 저장한다
//Log.d("location", r.get_arr_time());
} //밑에도 계속 있음... 6번정도
근데 이렇게 line이라는 한줄을 계속 중복해서 여러번 검사 하니까 코드도 너무 길어지고 젤 중요한게 오래 걸려서 그렇거든요...
어떻게 정규식을 작성해야 한번 검사하면 바로바로 그것에 알맞게 데이터를 저장 시킬수 있을까요?
그룹과 그룹인덱스, 패턴에서의 () 를 이용하면 될것같은데...해결이 안되고 있어요... 정규식은 첨이라서요
3일째 이것땜에 고생중입니다.. 도와주세요!!!



