Reputation: 15723
in java regex,use [^x]
to matching "not" with one char.
i want to know,how to matching more chars not?
i using [^789]
,it's not right.
String text="aa(123)bb(456)cc(789)dd(78)";
text=text.replaceAll("\\([^789].*?\\)","");
System.out.println(text);
i want get result is:
aabbcc(789)dd
how to fix my regex pattern?
thanks a lot :)
Upvotes: 3
Views: 125
Reputation: 838186
You can use a negative lookahead:
"\\((?!789\\)).*?\\)"
Explanation:
\\( Match a literal open parenthesis "(" (?! Start negative lookahead 789\\) Match literal "789)" ) End lookahead .*? Match any characters (non-greedy) \\) Match a literal close parenthesis ")"
If the pattern inside the negative lookahead matches then negative lookahead fails to match.
Upvotes: 7