protected void searchFilter(String s, int n)
{
RowFilter<MyTableModel, Object> rf = null;
try {
System.out.println(s);
rf = RowFilter.regexFilter(s, n);
} catch (PatternSyntaxException e) {
System.out.println(e);
}
filters.add(rf);
}
我正在尝试匹配包含括号的JTable中的字符串。在上面的代码中,字符串参数可以是: 约翰(史密斯)
我正在搜索的专栏:
Jane (Doe)
John (Smith)
John (Smith)
Jack (Smith)
我希望它返回的地方:
John (Smith)
John (Smith)
但是现在它不会返回任何东西。我查看了Matcher,Pattern和RowFilter的文档,但到目前为止没有任何帮助。
答案 0 :(得分:4)
括号是正则表达式中的元字符。因此,您实际上是在尝试匹配John Smith
(没有括号)。你需要做的就是逃避它们。
Java有一个内置函数可以自动转义所有元字符:Pattern.quote
。通过此功能运行s
,它应该修复它。
另请注意,您可能希望使用^...$
包围模式。否则它会接受包含This is John (Smith) foobar.
之类的行(因为正则表达式很高兴,如果它可以匹配输入的子字符串)。