2013-04-25 89 views
0

我有一個字符串,其中包含超過1的圖像標記。現在我需要將alt=標記正則表達式。我試過這樣:邏輯幫助 - java正則表達式

while (m3.find()) { 
    Pattern p4 = Pattern.compile("<!\\[CDATA\\[(.*?)\\]\\]>"); 
    Matcher m4 = p4.matcher(m3.group()); 

    while (m4.find()) { 
     if(m4.group().contains("<img src")) { 
      Pattern p6 = Pattern.compile("<img src(.*?)/>"); 
     Matcher m6 = p6.matcher(m4.group()); 

     while (m6.find()) { 
       Pattern p7 = Pattern.compile("alt=\"(.*?)\""); 
       Matcher m7 = p7.matcher(m6.group()); 

      while (m7.find()) { 
messages.add(m4.group().replace(m6.group(), m7.group().replace("alt=", "").replace("\"", "")).replace("<![CDATA[", "").replace("]]>", "")); 
           } 
          } 
         } else { 
          messages.add(m4.group().replace("<![CDATA[", "").replace("]]>", "")); 
         } 
        } 
       } 

問題是:有超過1個圖像標記。 messages是一個ArrayList。我需要1 messages.add實際消息中的所有圖像。代碼是這樣的,它完全不同,我也不知道如何解決它或我的錯誤在哪裏:/我只想用alt="..."的內容替換整個內容,但是每個實際的消息都包含它。誰能幫我?

回答

0

也許你應該使用像jsoup這樣的第三方庫,它允許以jquery的方式解析,提取和修改html文檔。使用這個庫,改變某些html元素的屬性(如explained here)應該像這樣工作:

Document doc = Jsoup.parse(html); 
doc.select("div.comments a").attr("rel", "nofollow"); 
+0

謝謝,這幫了我很多,得到它的工作(: – Phil 2013-04-26 05:24:08