Java 正则表达式解析JSoup中的html源代码
我试图从网页源文件中获取值这是我的html规则Java 正则表达式解析JSoup中的html源代码,java,html,jsoup,Java,Html,Jsoup,我试图从网页源文件中获取值这是我的html规则 e=d.select("li[id=result_48]"); e=d.select("div[id=result_48]"); 这是html标记 <li id="result_48" data-asin="0781774047" class="s-result-item"> <div id="result_48" data-asin="0781774047" class="s-result-item"> 我想做的是
e=d.select("li[id=result_48]");
e=d.select("div[id=result_48]");
这是html标记
<li id="result_48" data-asin="0781774047" class="s-result-item">
<div id="result_48" data-asin="0781774047" class="s-result-item">
我想做的是,无论用什么来代替“li”或“div”,我都想得到id中的值。。所以我想用RegX代替“li”或“div”
因此Jsoup元素应该检查id=result_48,如果出现类似情况,我需要数据。我该怎么做呢
提前感谢使用不同的属性顺序进行测试。可能遗漏了一些案例,所以请使用实际数据进行测试。 假设id属性中没有空格和引号
public static void main(String[] args) throws Exception {
String[] lines = {
"<li id=\"result_48\" data-asin=\"0781774047\" class=\"s-result-item\">",
"<div id=\"result_48\" data-asin=\"0781774047\" class=\"s-result-item\">",
"<div data-asin=\"0781774047\" id=\"result_48\" class=\"s-result-item\">",
"<div data-asin=\"0781774047\" class=\"s-result-item\" id=\"result_48\">" };
for (String str : lines) {
System.out.println(extractId(str));
}
}
private static String extractId(String line) {
String regex = "";
regex = regex + "(?:[<](?:li|div)).*id=\""; // match start until id="
regex = regex + "([^\\s^\"]+)"; // capture the id inside quotes (exclude
// spaces and quote)
regex = regex + "(?:.*\">)"; // match any characters until the end ">
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(line);
if (matcher.matches()) {
return matcher.group(1);
}
return null;
}
publicstaticvoidmain(字符串[]args)引发异常{
字符串[]行={
“”,
"",
"",
"" };
用于(字符串str:lines){
System.out.println(extractId(str));
}
}
私有静态字符串提取ID(字符串行){
字符串regex=“”;
regex=regex+“(?:[)”;//匹配任何字符直到结束“>
Pattern=Pattern.compile(regex);
匹配器匹配器=模式匹配器(线);
if(matcher.matches()){
返回匹配器组(1);
}
返回null;
}
为什么不能使用as id在html中是唯一的?result\u 48