2017-02-24 74 views
0

你好我想在java中使用的replaceAll,刪除圖像的某些HTML內容:更換正則表達式變量

這是我輸入

String html = '&nbsp;asd<i>&nbsp;qwe qwe<u>qweqwe</u></i><u>wqeqwesd.<img alt="vechile" src="urldirectionstring" style="float:left; height:190px; width:400px" /></u>'; 

所以我想要做的是更換的<img ...>的所有內容,並剛剛返回替換此:

​​

所以只需更換標籤img的,所有的休息,讓它只碰這個標籤,而現在我有這個,但它不是enougth;

String replaceImg = html.replaceAll("<img[^>]*/>","Image Url: "+$srcImgdirection); 

所以,正如你所看到的,我不知道如何獲得urldirectionstring作爲替換中的變量。

-----------最後的編輯-----------

我發現這個正則表達式來獲得urlstringdirection,但現在我不如何更換它只並添加文字:

String replaceImg = html.replaceAll("<img.*src="(.*)"[^>]*/?>","Image Url: "+$srcImgdirection); 
+1

您是否知道有正確解析HTML的庫,並且正則表達式不適合該任務? –

+1

我同意帕特里克,但爲了'replaceAll()'的將來應用:您可以通過'$ group_number',.eg'replaceAll(「src = \」([^ \「] *)訪問替換字符串中的捕獲組\「」,「src = \」前綴$ 1suffix \「」)'用「'前綴」'和'「後綴」包圍屬性內容 – Thomas

+2

但是,正如Patrick已經指出的那樣,正則表達式不適合不規則語言如hmtl(例如,嵌套標記發生了什麼?),除非你知道_everything_是一個例子,你的表達式' Thomas

回答

1

你可以使用:

String replaceImg = html.replaceAll(".*<img.*src=\"(.*?)\".*", "Image Url: $1"); 

這將替換整個字符串,輸出將只是Image Url: urldirectionstring(注意$1包含在快遞匹配的字符串但只是括號內的部分 - 基本上每對括號都會創建「組」,以後可以引用它們;作爲正則表達式只包含一對,這是第一組,這樣你就可以$1引用它)

如果你想只替換img標籤,並保持與其他標籤完好,你可以使用:

String replaceImg = html.replaceAll("<img.*src=\"(.*?)\"[^>]*/?>", "Image Url: $1"); 

在這種情況下,輸出將是: &nbsp;asd<i>&nbsp;qwe qwe<u>qweqwe</u></i><u>wqeqwesd.Image Url: urldirectionstring</u>