0

1 つ以上のイメージ タグを含む文字列があります。ここで、alt=タグを正規表現する必要があります。私はこのように試しました:

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("]]>", ""));
                        }
                    }
                }

問題は、画像タグが複数あることです。messagesArrayList です。messages.add実際のメッセージのすべての画像に対して1 つだけ必要です。そのままのコードは非常に異なることを行い、それを修正する方法や間違いがどこにあるのかわかりません:/ 全体を の内容に置き換えたいだけですalt="..."が、実際のメッセージにはすべてが含まれています。誰でも私を助けることができますか?

4

1 に答える 1

0

おそらく、jquery 方式で html ドキュメントを解析、抽出、および変更できるjsoupなどのサードパーティ ライブラリを使用する必要があります。このライブラリを使用して、特定の html 要素の属性を変更すると (ここで説明されているように)、次のように動作するはずです。

Document doc = Jsoup.parse(html);
doc.select("div.comments a").attr("rel", "nofollow");
于 2013-04-25T23:03:58.447 に答える