Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/82.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 正则表达式解析JSoup中的html源代码_Java_Html_Jsoup - Fatal编程技术网

Java 正则表达式解析JSoup中的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"> 我想做的是

我试图从网页源文件中获取值这是我的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">
  • 我想做的是,无论用什么来代替“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中是唯一的?
  • 这是html标记。我在您的请求中看不到任何正则表达式,您请求id
    result\u 48