正则表达式,用于在网页中查找值

时间:2010-03-06 16:29:26

标签: java html regex

我需要找到一个正则表达式,它从html doc中的表格单元格中提取一个值。

此表格单元格的示例内容为“结果:40分钟”。

我需要一个正则表达式来匹配实际数字(40)。

这是在java中,提前感谢。

3 个答案:

答案 0 :(得分:2)

我之前尝试使用正则表达式来做这件事,这是一个痛苦的漏洞。

使用XPath表达式更容易,您可以在DOM层次结构中按位置指定位置。 Apache库可以执行此操作(特别是Xalan),可以在此处找到:http://xml.apache.org/xalan-j/

您可以使用Firefox插件XPath Checker来帮助您解决此问题。

如果您正在寻找其他工具/信息,那么您所谈论的区域称为“网络抓取”。

答案 1 :(得分:0)

您想使用DOM / XPATH,但如果您真的需要正则表达式来处理简单情况,请尝试

/\<\s*td[^\>]*\>\s*result: (\d+) mins\s*\<\/td\>/i

再次,可能适用于大多数HTML,但正则表达式不适用于所有HTML。

答案 2 :(得分:0)

如果不是一次性情况,请使用XPath检索某个HTML元素的内容(“结果:40分钟”),然后使用简单的正则表达式来获取所需内容:"result: (\d+) mins"(以适应OverClocked所写的内容)。如果HTML(很可能)不正确,您可以使用类似JTidy的内容进行清理。

在最简单的情况下,您只需在完整页面中查找表达式:".*result: (\d+) mins.*"

顺便说一下,您指向的网页不包含任何类型的“结果”:如果您使用“路线”,您可以使用以下内容:

String pageContent = ...
Pattern p = java.util.regex.Pattern.compile("Route: ((\\d*) hour )*(\\d*) mins");
Matcher m = p.matcher(pageContent);
m.find();
System.out.println(m.group{1});
System.out.println(m.group{2});