2010-09-24 51 views
3

在java的正则表达式中,使用[^x]来匹配“不”与一个字符。如何在Java正则表达式模式中匹配“不”与更多字符?

我想知道,如何匹配更多的字符不是?

我使用[^789],这是不对的。

String text="aa(123)bb(456)cc(789)dd(78)"; 
    text=text.replaceAll("\\([^789].*?\\)",""); 

    System.out.println(text); 

我想要得到的结果是:

aabbcc(789)dd 

如何解决我的正则表达式模式?

感谢很多:)

回答

7

您可以使用negative lookahead

"\\((?!789\\)).*?\\)" 

说明:

 
\\( Match a literal open parenthesis "(" 
(?!  Start negative lookahead 
789\\) Match literal "789)" 
)  End lookahead 
.*?  Match any characters (non-greedy) 
\\)  Match a literal close parenthesis ")" 

如果负先行里面的图案,然后匹配负向前查找匹配失败。

+0

+1。来到这里发布这一点。 – 2010-09-24 11:17:58

+0

好的。我会用Matcher循环来完成它。 – 2010-09-24 14:15:00