$和〜之间有什么区别?

时间:2014-03-21 21:13:03

标签: jsoup

之间有什么区别
doc.select("img[src$=.png");

doc.select("img[src~=.png");  

我在同一页面上使用了两个语句并得到了不同的结果我无法理解为什么,最终都在寻找带有png格式的img src,但结果仍然非常不同...... 下面是我正在运行的代码:

Document doc;
try {
    //get all images
    doc = Jsoup.connect("http://www.wolframalpha.com/input/?i=tumor+").get();

            Elements images = doc.select("img[src$=.png");
            Elements images1 = doc.select("img[src~=.png");

            for (Element image : images) {
                    System.out.println("\nsrc : " + image.attr("src"));
                    System.out.println("height : " + image.attr("height"));
                    System.out.println("width : " + image.attr("width"));
                    System.out.println("alt : " + image.attr("alt"));
            }

            for (Element image1 : images1) {
                    System.out.println("\nsrc : " + image1.attr("src"));
                    System.out.println("height : " + image1.attr("height"));
                    System.out.println("width : " + image1.attr("width"));
                    System.out.println("alt : " + image1.attr("alt"));
            }

} catch (IOException e) {
    System.out.println(e);
}

1 个答案:

答案 0 :(得分:2)

doc.select("img[src$=.png]");表示您要选择结束的值.png

doc.select("img[src~=.png]");表示您要选择匹配给定正则表达式的值。在您的示例中,正则表达式为.png,即任何字符.),后跟png。由于未指定,它可以匹配值中的任何位置。

所以这些都是与你的正则表达式匹配的有效值:

所以我猜第二个匹配至少一个包含" png"某处。