2010-09-24 47 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