Filtering with Pattern, use metacharacters as a literal
Hello,
I am using java.util.regex.Pattern for searching data in my JTable.
Here is piece of code:
boolean matches = false;
Pattern p = Pattern.compile(searchString + ".*", (Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE));
// match against comment text
String test = "test";
matches = p.matcher(test).matches();
return matches;
Everything works fine, except for metacharacters: [, $, ^, &, ...
When i enter some of the metacharacters i got matches even there are
no such character in test string "test".
I know that i need some way to escape those characters but not sure how
to do that. I tried to replace all characters in searchString like this:
[ replaced with \[
& replaced with \& and so on.
But then when i enter [ for searching i got following exception:
Exception occurred during event dispatching:
[java] java.util.regex.PatternSyntaxException: Unclosed character class near index 4
[java] [.*.*
[java] ^
[java] at java.util.regex.Pattern.error(Unknown Source)
[java] at java.util.regex.Pattern.clazz(Unknown Source)
[java] at java.util.regex.Pattern.sequence(Unknown Source)
[java] at java.util.regex.Pattern.expr(Unknown Source)
[java] at java.util.regex.Pattern.compile(Unknown Source)
[java] at java.util.regex.Pattern.<init>(Unknown Source)
[java] at java.util.regex.Pattern.compile(Unknown Source)
Any help will be appreciated.