Java正则表达式问题

时间:2010-10-12 21:52:31

标签: java regex

有一个网站,我要解析的内容。来源如下

 <tr> <td><a
 href="http://www.z104.com/"><b>WNVZ</b></a>
 - Z104</td> <td>Norfolk</td> <td>Virginia</td> <td><img
 src="mp3.gif" alt="MP3" width="12"
 height="12"></td> <td><a
 href="http://provisioning.streamtheworld.com/pls/WNVZFM.pls">64
 Kbps</a></td> <td>Top 40</td> </tr>

 <tr> <td><a
 href="http://www.z104.com/"><b>WNVZ</b></a>
 - Z104</td> <td>Norfolk</td> <td>Virginia</td> <td><img
 src="mp3.gif" alt="MP3" width="12"
 height="12"></td> <td><a
 href="http://provisioning.streamtheworld.com/pls/WNVZFM.pls">64
 Kbps</a></td> <td>Top 40</td> </tr>

...等

如何从中剪切所有数据,我想使用正则表达式,返回字符串,我需要的是:

WNVZ - Z104#Norfolk#Virginia#http://provisioning.streamtheworld.com/pls/WNVZFM.pls#Top 40

WNVZ - Z104#Norfolk#Virginia#http://provisioning.streamtheworld.com/pls/WNVZFM.pls#Top 40 等

所以,我想剪切所有这些,字符串是“.pls”或“.m3u”

抱歉,我的英语很糟糕。

3 个答案:

答案 0 :(得分:3)

使用正则表达式解析HTML很困难;使用XML解析器(如SAX)可能会更好。

答案 1 :(得分:1)

不要尝试使用正则表达式,因为HTML不规则,并且边缘情况的数量将使编码成为正则表达式。相反,您将使用诸如JTidy之类的HTML解析器获得更可靠的解决方案。

答案 2 :(得分:0)

如果你坚持使用正则表达式,我会为你制作这个正则表达式:

搜索:

  <tr\b[^><]*>\s*<td\b[^><]*>\s*<a\b[^><]*>\s*<b>\s*(WNVZ)\s*<\/b>\s*<\/a>\s*-\s*(\w+)<\/td>\s*<td\b[^><]*>\s*(Norfolk)\s*<\/td>\s*<td\b[^><]*>\s*(Virginia)\s*</td>\s*<td\b[^><]*>\s*<img\b[^><]*>\s*</td>\s*<td\b[^><]*>\s*<a\b[^><]*href\s*=\s*["']([^"'><]+)["'][^><]*>[^><]*<\/a>\s*<\/td>\s*<td\b[^><]*>([^><]*)</td>

替换为:

  $1 - $2#$3#$4#$5#$6