在Java中解析开始和结束的字符串

时间:2012-12-12 00:54:15

标签: java string parsing webpage

我无法找到任何关于我需要为Java字符串做的解析的文档。

所以,这不像是用线条或逗号或其他东西解析那么简单,它有点复杂。

我的程序抓取了网页的来源,我需要解析它以查看视图标记的内容。

解析它之间的内容

<input name="sid" type="hidden" value="

" />

所以,如果网页上有这个字符串:

<input name="sid" type="hidden" value="stringvaluehere" />

输出

stringvaluehere

有人可以帮忙吗?我根本找不到任何关于这类文件的文档,并且在其他来源询问并没有帮助。

谢谢!

4 个答案:

答案 0 :(得分:5)

如果你想解析HTML,我建议使用HTML解析器而不是使用String操作。将文档解析为String只是在遇到您不期望的奇怪输入时才会出现问题。

这个问题讨论了很好的潜在Java HTML解析器:Java HTML Parsing

答案 1 :(得分:5)

您可以使用库,例如​​JSoup。它通常比尝试手动解析DOM容易得多。

Document doc = Jsoup.connect("http://www.example.com").get();
Elements inputs = doc.select("input#sid");
for(Element input : inputs) {
    System.out.println(input.attr("value"));
}

简单易用&amp;重要的是易于阅读。

答案 2 :(得分:1)

这有点沉重,有一个可能真的很酷且很糟糕的正则表达式可以做得更好,但是......

String value = "<input name=\"sid\" type=\"hidden\" value=\"stringvaluehere\" />";
value = value.substring(value.indexOf("value=\"") + "value=\"".length());
value = value.substring(0, value.indexOf("\""));
System.out.println(value);

打印stringvaluehere

<强>更新

另一种方法是将HTML文本视为XML,并使用XML解析器查找元素的属性。虽然听起来很复杂,但是FAR是一个更简单的解决方案,特别是如果你倾向于解析多个网页。

可能有用的两个解决方案是jsoupCobra

答案 3 :(得分:1)

如果页面是格式良好的XML,则可以使用XPATH查询语言来实现此目的。它比低级的正则表达式匹配更清晰。或者一些用于解析HTML的现有库。