我在使用我的程序完成一些操作時遇到了麻煩,我希望有人能夠提供幫助。Java Help使用模式操縱錨點
我有一個包含HTML頁面源代碼的字符串。
我希望做的是提取下列HTML的所有實例,並將其放置在一個數組:
<img src="http://*" alt="*" style="max-width:460px;">
因此,我將不得不X尺寸的包含類似於上述值的數組,顯然同時更新了src和alt屬性。
這可能嗎?我知道有XML解析器,但格式總是相同的。
任何幫助將不勝感激。
我在使用我的程序完成一些操作時遇到了麻煩,我希望有人能夠提供幫助。Java Help使用模式操縱錨點
我有一個包含HTML頁面源代碼的字符串。
我希望做的是提取下列HTML的所有實例,並將其放置在一個數組:
<img src="http://*" alt="*" style="max-width:460px;">
因此,我將不得不X尺寸的包含類似於上述值的數組,顯然同時更新了src和alt屬性。
這可能嗎?我知道有XML解析器,但格式總是相同的。
任何幫助將不勝感激。
我會建議使用ArrayList
而不是靜態數組,因爲它看起來像你不知道你會有多少匹配。
也不是好主意,有正則表達式的HTML,但如果你是肯定的標籤始終使用相同的格式,然後我會建議:
Pattern pattern = Pattern.compile(".*<img src=\"http://(.*)\" alt=\"(.*)\"\\s+sty.*>", Pattern.MULTILINE);
下面是一個例子:
public static void main(String[] args) throws Exception {
String web;
String result = "";
for (int i = 0; i < 10; i++) {
web = "<img src=\"http://image" + i +".jpg\" alt=\"Title of Image " + i + "\" style=\"max-width:460px;\">";
result += web + "\n";
}
System.out.println(result);
Pattern pattern = Pattern.compile(".*<img src=\"http://(.*)\" alt=\"(.*)\"\\s+sty.*>", Pattern.MULTILINE);
List<String> imageSources = new ArrayList<String>();
List<String> imageTitles = new ArrayList<String>();
Matcher matcher = pattern.matcher(result);
while (matcher.find()) {
String imageSource = matcher.group(1);
String imageTitle = matcher.group(2);
imageSources.add(imageSource);
imageTitles.add(imageTitle);
}
for(int i = 0; i < imageSources.size(); i++) {
System.out.println("url: " + imageSources.get(i));
System.out.println("title: " + imageTitles.get(i));
}
}
}
當您獲得ArrayIndexOutOfBoundsException
時,String
數組imageTitles
很可能不足以容納在正則表達式搜索中找到的所有ALT實例。在這種情況下,它可能是一個零大小的數組。
真棒!正是我想要的,+1找到解決方案來獲取src和alt值。非常感謝! – Cristian
不客氣! – gtgaxiola