2012-09-24 54 views
0

我在使用我的程序完成一些操作時遇到了麻煩,我希望有人能夠提供幫助。Java Help使用模式操縱錨點

我有一個包含HTML頁面源代碼的字符串。

我希望做的是提取下列HTML的所有實例,並將其放置在一個數組:

<img src="http://*" alt="*" style="max-width:460px;"> 

因此,我將不得不X尺寸的包含類似於上述值的數組,顯然同時更新了src和alt屬性。

這可能嗎?我知道有XML解析器,但格式總是相同的。

任何幫助將不勝感激。

回答

1

我會建議使用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)); 

     } 
    } 
} 
+0

真棒!正是我想要的,+1找到解決方案來獲取src和alt值。非常感謝! – Cristian

+0

不客氣! – gtgaxiola

1

當您獲得ArrayIndexOutOfBoundsException時,String數組imageTitles很可能不足以容納在正則表達式搜索中找到的所有ALT實例。在這種情況下,它可能是一個零大小的數組。