像下面这个页面,怎么用正则表达式找到第二行为空的那一列,对应第一行的日期。
比如下面这个页面,第2行第20列是空,怎么得到它上面的“18日”?备注:下面的html文档已经被读到String里了,只能用正则表达式来处理了
<HTML>
<HEAD>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
body{font-size:9pt;font-family:宋体}
select{font-size:9pt;font-family:宋体}
table{font-size:9pt;font-family:宋体}
</style>
</HEAD>
<BODY topmargin=0 leftmargin=0>
<TABLE WIDTH="70%" border="0" align="center" >
<tr bgcolor="#ffffff">
<td height=20 align=left colspan=4><a href="wxkh_Day_index.asp"></a></td>
</tr>
</TABLE>
<TABLE WIDTH="70%" border="0" align="center" cellpadding="4" cellspacing="1" bgcolor=SteelBlue class="Navbar" ID="Table1">
<tr bgcolor="#eeeeee">
<td height=40 align=center colspan=33>表头</td>
</tr>
<tr bgcolor="#eeeeee">
<td align="right" colspan="33">
<table WIDTH="100% "border="0" align="center" cellpadding="4" cellspacing="1">
<tr>
<td WIDTH="70%"> </td>
<td WIDTH="30%" style="text-align:right; padding-right:20px;">日期:
<SELECT id=sel_Date name=sel_Date language=javascript onChange="Date_onChange()">
<OPTION value=2013-6-1 selected>2013年6月</OPTION>
</SELECT></td>
</tr>
</table>
</td>
</tr>
<tr bgcolor="#eeeeff">
<td align="center" width="4%">公司</td>
<td align="center" width="3%">合计</td>
<td align="center" width="3%">1日</td><td align="center" width="3%">2日</td><td align="center" width="3%">3日</td><td align="center" width="3%">4日</td><td align="center" width="3%">5日</td><td align="center" width="3%">6日</td><td align="center" width="3%">7日</td><td align="center" width="3%">8日</td><td align="center" width="3%">9日</td><td align="center" width="3%">10日</td><td align="center" width="3%">11日</td><td align="center" width="3%">12日</td><td align="center" width="3%">13日</td><td align="center" width="3%">14日</td><td align="center" width="3%">15日</td><td align="center" width="3%">16日</td><td align="center" width="3%">17日</td><td align="center" width="3%">18日</td><td align="center" width="3%">19日</td><td align="center" width="3%">20日</td><td align="center" width="3%">21日</td><td align="center" width="3%">22日</td><td align="center" width="3%">23日</td><td align="center" width="3%">24日</td><td align="center" width="3%">25日</td><td align="center" width="3%">26日</td><td align="center" width="3%">27日</td><td align="center" width="3%">28日</td><td align="center" width="3%">29日</td><td align="center" width="3%">30日</td>
</tr>
<tr bgcolor="#ffffee">
<td align="center">天津</td>
<td align="center">1</td>
<td align="center" width="3%"><a href='WXKH_viewday_YiJing_memo.asp?PublishTime=2013-6-1&BranchCode=220&BranchDec=天津'>1</a></td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%"></td><td align="center" width="3%"></td><td align="center" width="3%"></td><td align="center" width="3%"></td><td align="center" width="3%"></td><td align="center" width="3%"></td><td align="center" width="3%"></td><td align="center" width="3%"></td><td align="center" width="3%"></td><td align="center" width="3%"></td><td align="center" width="3%"></td><td align="center" width="3%"></td><td align="center" width="3%"></td>
</tr>
</TABLE>
</BODY>
</HTML>
比如下面这个页面,第2行第20列是空,怎么得到它上面的“18日”?备注:下面的html文档已经被读到String里了,只能用正则表达式来处理了
<HTML>
<HEAD>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css">
body{font-size:9pt;font-family:宋体}
select{font-size:9pt;font-family:宋体}
table{font-size:9pt;font-family:宋体}
</style>
</HEAD>
<BODY topmargin=0 leftmargin=0>
<TABLE WIDTH="70%" border="0" align="center" >
<tr bgcolor="#ffffff">
<td height=20 align=left colspan=4><a href="wxkh_Day_index.asp"></a></td>
</tr>
</TABLE>
<TABLE WIDTH="70%" border="0" align="center" cellpadding="4" cellspacing="1" bgcolor=SteelBlue class="Navbar" ID="Table1">
<tr bgcolor="#eeeeee">
<td height=40 align=center colspan=33>表头</td>
</tr>
<tr bgcolor="#eeeeee">
<td align="right" colspan="33">
<table WIDTH="100% "border="0" align="center" cellpadding="4" cellspacing="1">
<tr>
<td WIDTH="70%"> </td>
<td WIDTH="30%" style="text-align:right; padding-right:20px;">日期:
<SELECT id=sel_Date name=sel_Date language=javascript onChange="Date_onChange()">
<OPTION value=2013-6-1 selected>2013年6月</OPTION>
</SELECT></td>
</tr>
</table>
</td>
</tr>
<tr bgcolor="#eeeeff">
<td align="center" width="4%">公司</td>
<td align="center" width="3%">合计</td>
<td align="center" width="3%">1日</td><td align="center" width="3%">2日</td><td align="center" width="3%">3日</td><td align="center" width="3%">4日</td><td align="center" width="3%">5日</td><td align="center" width="3%">6日</td><td align="center" width="3%">7日</td><td align="center" width="3%">8日</td><td align="center" width="3%">9日</td><td align="center" width="3%">10日</td><td align="center" width="3%">11日</td><td align="center" width="3%">12日</td><td align="center" width="3%">13日</td><td align="center" width="3%">14日</td><td align="center" width="3%">15日</td><td align="center" width="3%">16日</td><td align="center" width="3%">17日</td><td align="center" width="3%">18日</td><td align="center" width="3%">19日</td><td align="center" width="3%">20日</td><td align="center" width="3%">21日</td><td align="center" width="3%">22日</td><td align="center" width="3%">23日</td><td align="center" width="3%">24日</td><td align="center" width="3%">25日</td><td align="center" width="3%">26日</td><td align="center" width="3%">27日</td><td align="center" width="3%">28日</td><td align="center" width="3%">29日</td><td align="center" width="3%">30日</td>
</tr>
<tr bgcolor="#ffffee">
<td align="center">天津</td>
<td align="center">1</td>
<td align="center" width="3%"><a href='WXKH_viewday_YiJing_memo.asp?PublishTime=2013-6-1&BranchCode=220&BranchDec=天津'>1</a></td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%">0</td><td align="center" width="3%"></td><td align="center" width="3%"></td><td align="center" width="3%"></td><td align="center" width="3%"></td><td align="center" width="3%"></td><td align="center" width="3%"></td><td align="center" width="3%"></td><td align="center" width="3%"></td><td align="center" width="3%"></td><td align="center" width="3%"></td><td align="center" width="3%"></td><td align="center" width="3%"></td><td align="center" width="3%"></td>
</tr>
</TABLE>
</BODY>
</HTML>
我是把Internet上的html文档读到String里,不是在html里直接处理,这个能用dom处理吗?
而且我是改别人的程序,用dom重写工作量也大。
我试了下groupcount,他是先匹配整个字符串,然后匹配括号内的。但是这里我需要匹配第二行里为空的列,然后找到这列上面第一行中的日期,用groupcount不合适吧?
String regex = "(?s)<tr bgcolor=\"#eeeeff\"(?:.(?!<tr))*?(?:\\s*<td.*?>.*</td>\\s*)*(?:\\s*<td.*?>(.*?)</td>\\s*).*?</tr>(?s)<tr bgcolor=\"#ffffee\"(?:.(?!<tr))*?(?:\\s*<td.*?>0</td>\\s*)*(?:\\s*<td.*?>(.*?)</td>\\s*).*?</tr>";怎么执行到matcher.find()时,就不动了,调试也没反应?