【发布时间】:2011-04-27 08:51:42
【问题描述】:
我正在尝试使用 Jsoup HTML Parser 从网站获取缩略图 URL 我需要提取所有以 60x60.jpg(或 png)结尾的 URL(所有缩略图 URL 都以此 URL 结尾)
问题是我让它在一个普通的 Java 项目中工作,但在 Android 中它不起作用。 (正则表达式问题)
此代码适用于 Java 项目:
List<String> urls = new ArrayList<String>();
Document doc = Jsoup.connect("http://example.com").get();
Elements pngs = doc.select("img[src~=(60x60).(png|jpg)]");
for (Element img : pngs) {
String url = img.absUrl("src");
{
if (!urls.contains(url)) {
urls.add(url);
}
}
}
然后打印 urls 数组。它在 Java 中工作,而不是在 Android 项目中。
在 Android 中,工作的唯一正则表达式只有这个
Elements pngs = doc.select("img[src$=.jpg]");
它在 Android 上运行良好.. 虽然我不需要所有以 .jpg 结尾的链接
我尝试过使用
Elements pngs = doc.select("img[src~=(60x60)\\.(png|jpg)]");
仍然不好,即使在 .(png|jpg) 前加了一个斜线
那么是正则表达式的问题吗?它在Android中的工作方式不同还是什么?它不可能是解析器问题,因为它适用于普通的 Java 项目..
【问题讨论】:
-
如果
img[src$=.jpg]应该是一个正则表达式,那么它肯定没有按照您的预期做。它匹配字符串img,后跟一个字符,可以是s、r、c、$、=、.、j、@9876543333@或@987654 @. -
不是'('和')'的问题尝试在em之前添加转义字符
-
@Tim 这是一个 CSS 选择器,
~表示它是一个正则表达式选择器 -
@Tim Pietzcker 好的 tnx,我使用了这个“img[src$=60x60.jpg]”,但我怎样才能添加 png 呢?添加 (jpg|png) 不起作用。 tnx
标签: java android regex image jsoup