Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 正则表达式在网页中查找值_Java_Html_Regex - Fatal编程技术网

Java 正则表达式在网页中查找值

Java 正则表达式在网页中查找值,java,html,regex,Java,Html,Regex,我需要找到一个正则表达式,它从html文档中的表单元格中提取一个值 此表格单元格的示例内容为“结果:40分钟” 我需要一个正则表达式来匹配实际的数字(40) 这是用java编写的,提前谢谢。我以前尝试过用正则表达式来实现这一点,但这是一个棘手的问题 使用XPath表达式这样的东西要容易得多,您可以通过它在DOM层次结构中的位置来指定位置。Apache库可以做到这一点(特别是Xalan),可以在以下位置找到: 您可以使用Firefox插件XPath检查器来帮助您解决这个问题 顺便说一句,如果您正在

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

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

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


这是用java编写的,提前谢谢。

我以前尝试过用正则表达式来实现这一点,但这是一个棘手的问题

使用XPath表达式这样的东西要容易得多,您可以通过它在DOM层次结构中的位置来指定位置。Apache库可以做到这一点(特别是Xalan),可以在以下位置找到:

您可以使用Firefox插件XPath检查器来帮助您解决这个问题


顺便说一句,如果您正在寻找其他工具/信息,您正在谈论的领域称为“web抓取”。

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

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

同样,它可能适用于大多数HTML,但regex不适用于所有HTML。

如果不是一次性的情况,请使用XPath检索特定HTML元素的内容(“结果:40分钟”),然后使用简单的regexp获取所需内容:
“结果:(\d+)分钟”
(以适应Overclock编写的内容)。如果HTML(很可能)不正确,您可以使用以下内容进行清理

在最简单的情况下,您只需在完整页面中查找表达式:
“*result:(\d+)分钟。*”

顺便说一句,您指向的网页不包含任何类型的“结果”:如果您选择了“路线”,您应该可以这样做:

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});

这样的信息太少,无法构建任何类型的匹配规则。在大多数情况下,最好使用DOM解析器而不是正则表达式