求大侠指教一个正则表达式

wangjunfeng2010 2014-11-27 06:31:07
有如下的结构(从网上抓取的网页源文件):
<h1>2014</h1>
<table>
<tr>
<td>
<strong>November</strong>
<a href="a.html">a</a>
</td>
<td></td>
</tr>
</table>
<h1>2013</h1>
<table>
<tr>
<td>
<strong>October</strong>
<a href="b.html">b</a>
</td>
<td>
<strong>September</strong>
<a href="c.html">c</a>
</td>
</tr>
</table>
<h1>2012</h1>
<table>
<tr>
<td>
<strong>August</strong>
<a href="d.html">d</a>
</td>
<td>
<strong>July</strong>
<a href="e.html">e</a>
</td>
<td>
<strong>June</strong>
<a href="f.html">f</a>
</td>
</tr>
</table>

现在要通过正则表达式输出如下结果(即table中可能有数量不等的td,要能解析这些数量不固定的td):

2014 November a.html
2013 October b.html
2013 September c.html
2012 August d.html
2012 July e.html
2012 June f.html

请各位大侠指教,不胜感激~~~
...全文
316 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangjunfeng2010 2014-12-04
  • 打赏
  • 举报
回复
感谢大家。。 我本来就想通过一个正则表达式搞定,现在没办法。只有分步来做了~
suciver 2014-12-01
  • 打赏
  • 举报
回复
html格式的建议用jsoup要比正则精准,java的正则不支持平衡组的,不适合解析html这样的数据格式。你贴出来的只是部分,如果其它地方不会影响的话,可以用楼上的正则
tony4geek 2014-12-01
  • 打赏
  • 举报
回复
public static void main(String[] args) {
		String s = "<h1>2014</h1><table><tr><td><strong>November</strong><a href=\"a.html\">a</a></td><td></td></tr></table><h1>2013</h1><table><tr><td><strong>October</strong><a href=\"b.html\">b</a></td><td><strong>September</strong><a href=\"c.html\">c</a></td></tr></table><h1>2012</h1><table><tr><td><strong>August</strong><a href=\"d.html\">d</a></td><td><strong>July</strong><a href=\"e.html\">e</a></td><td><strong>June</strong><a href=\"f.html\">f</a></td></tr></table>";
		Matcher m = Pattern.compile("<h1>(.*?)</h1><table>(.*?)</table>").matcher(s);
				
		while (m.find()) {
			Matcher subM = Pattern.compile("<strong>(.*?)</strong>.*?<a href=\"(.*?)\">.</a>").matcher(m.group(2));
			while (subM.find()) {
				System.out.println(m.group(1) + "  " + subM.group(1) + "   "+ subM.group(2));
			}
		}
	}
程序猿的人生 2014-12-01
  • 打赏
  • 举报
回复
不太懂这个,。。
attilax 2014-11-30
  • 打赏
  • 举报
回复
推荐使用html解析库,,,正则表达式不适合这种场合。。
浪里花 2014-11-27
  • 打赏
  • 举报
回复
正则我不太会,推荐你用jsoup这个开源jar,这个是解析html利器,非常强大,查询语法和jquery语法很类似

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧