首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用RowFilter匹配括号(regexFilter)

使用RowFilter匹配括号(regexFilter)
EN

Stack Overflow用户
提问于 2012-12-08 20:42:33
回答 1查看 622关注 0票数 4
代码语言:javascript
复制
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)

和我正在搜索的专栏:

代码语言:javascript
复制
Jane (Doe)
John (Smith)
John (Smith)
Jack (Smith)

我希望它返回的位置:

代码语言:javascript
复制
John (Smith)
John (Smith)

但是现在它没有返回任何东西。我已经看过Matcher、Pattern和RowFilter的文档,但到目前为止还没有什么帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-08 20:57:29

圆括号是正则表达式中的元字符。因此,您实际上是在尝试匹配John Smith (不带括号)。你需要做的就是逃离它们。

Java有一个内置的函数可以自动转义所有元字符:Pattern.quote。通过此函数运行s,它应该会修复它。

还要注意的是,您可能希望用^...$将模式包围起来。否则,它将接受包含诸如This is John (Smith) foobar.之类的内容的行(因为正则表达式很高兴它可以匹配输入的子字符串)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13777554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档