*Markus: Matcher.find() findet 1. Treffer immer doppelt?

Beitrag lesen

Hi,

ich durchsuche folgenden Text:

<div class="vsThumbs">
    <div id="setThumbs">
  <a href="/photos/14341958@N03/1478405712/in/set-72157602245820202/" title="screenshotDavor" class="image_link" id="set_thumb_link_1478405712"><img src="http://farm2.static.flickr.com/1219/1478405712_d1301e1122_s.jpg" alt="screenshotDavor" width="75" height="75" /></a><a href="/photos/14341958@N03/1499332140/in/set-72157602245820202/" title="HPIM0233" class="image_link" id="set_thumb_link_1499332140"><img src="http://farm3.static.flickr.com/2077/1499332140_e67e8ec92a_s.jpg" alt="HPIM0233" width="75" height="75" /></a><a href="/photos/14341958@N03/1498488199/in/set-72157602245820202/" title="HPIM0251" class="image_link" id="set_thumb_link_1498488199"><img src="http://farm3.static.flickr.com/2059/1498488199_e7ca85916e_s.jpg" alt="HPIM0251" width="75" height="75" /></a>  </div>

Ich extrahiere hier alle Link mit der Endung .jpg:

  
  Matcher matcher = Pattern.compile("<img src=\"(http://[/\\.\\w\\d]+)_\\w*\\.jpg\" alt=\"").matcher(htmlFile);  
  int i = 0;  
  while (matcher.find())   {  
   if (!graphicURLs.contains(matcher.group(1)+".jpg?v=0"))   {  
      graphicURLs.add(matcher.group(1)+".jpg?v=0");  
      System.out.println("Found: " + matcher.group(1) + ".jpg?v=0");  
      i++;  
   }  
  }  
  System.out.println(i + " Graphics found!");  
  return graphicURLs;  

Aber dummerweise musste ich diese IF-Verzweigung einbauen, da der erste Treffer (und nur der erste) immer doppelt in die ArrayList geschrieben wird und ich verstehe nicht wieso. Das würde dann so aussehen:

http://farm2.static.flickr.com/1219/1478405712_d1301e1122.jpg?v=0
http://farm2.static.flickr.com/1219/1478405712_d1301e1122.jpg?v=0
http://farm3.static.flickr.com/2077/1499332140_e67e8ec92a.jpg?v=0
http://farm3.static.flickr.com/2059/1498488199_e7ca85916e.jpg?v=0

Wieso passiert das, würde ich die If-Verzweigung nicht verwenden?

Markus