2012-10-10 55 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