2012-10-10 86 views
0

我有一個字符串是HTML段落的順序,我想刪除(使用字符串的方法的replaceAll),它包含單詞「UPDATE」的段落刪除一些段落,通常他們都是以這種形式:從HTML字符串

<p><a href="blabla">(UPDATE)<a></p> 

但也可能有其他的,例如一些強大的部分。 因爲它幾乎是不可能的,一個普通的段落包含確切的詞「UPDATE」我想只是爲了找到一個正則表達式,可以發現其中包含這個詞的一段文字,並刪除它

replaceAll("regex",""); 

你能幫助我找到「正則表達式」部分?我不擅長與正則表達式...

+3

強烈建議使用正則表達式,並推薦輕量級的HTML解析器,如tagsoup來執行此操作。 – Vikdor

+0

它是一個android應用程序,因爲我只是有那些類型的字符串,你認爲最好添加一個外部的.jar文件?我更擔心表演,儘管......如果你說我會得到改善,我可以嘗試...... – Phate

回答

4

我認爲這就是你要找的。你需要使用。*?而不是*,因爲這會迫使搜索變得懶惰而不是貪婪。

public class Test { 

    public static void main(String[] args) { 
     String haystack = "<p><a href='bla'>(UPDATE)</a></p><p><a href='bla'><strong>(UPDATE)</strong></a></p><p><a href='bla'><strong>(Non uppercase 'update' to show this match is exact)</strong></a></p><p><a href='bla'><strong>This does not contain the word you're looking for</strong></a></p>"; 
     String regex = "<p>.*?(UPDATE).*?</p>"; 

     String result = haystack.replaceAll(regex, ""); 
     System.out.println("Result: " + result); 
    } 
} 
+0

對不起,確切的區別在哪裏?它更有效率嗎? – Phate

+0

@Phate Jeroen正則表達式更好,因爲如果你有兩個段落一個接一個,它會找到兩者。 Jeroen +1,我刪除我的。 – LaGrandMere