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中的字符串。在上面的代码中,字符串参数可以是: John (Smith)
和我正在搜索的专栏:
Jane (Doe)
John (Smith)
John (Smith)
Jack (Smith)我希望它返回的位置:
John (Smith)
John (Smith)但是现在它没有返回任何东西。我已经看过Matcher、Pattern和RowFilter的文档,但到目前为止还没有什么帮助。
发布于 2012-12-08 20:57:29
圆括号是正则表达式中的元字符。因此,您实际上是在尝试匹配John Smith (不带括号)。你需要做的就是逃离它们。
Java有一个内置的函数可以自动转义所有元字符:Pattern.quote。通过此函数运行s,它应该会修复它。
还要注意的是,您可能希望用^...$将模式包围起来。否则,它将接受包含诸如This is John (Smith) foobar.之类的内容的行(因为正则表达式很高兴它可以匹配输入的子字符串)。
https://stackoverflow.com/questions/13777554
复制相似问题