如何在Java正则表达式模式中匹配“不”与更多字符?
问题描述:
在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
如何解决我的正则表达式模式?
感谢很多:)
答
您可以使用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 ")"
如果负先行里面的图案,然后匹配负向前查找匹配失败。
+1。来到这里发布这一点。 – 2010-09-24 11:17:58
好的。我会用Matcher循环来完成它。 – 2010-09-24 14:15:00