4
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のドキュメントを見てきましたが、これまでのところ何も役に立ちませんでした。

4

1 に答える 1

4

括弧は正規表現のメタ文字です。したがって、実際にはJohn Smith(括弧なしで)一致させようとしています。あなたがする必要があるのはそれらを脱出することです。

Javaには、すべてのメタ文字を自動的にエスケープする組み込み関数がありますPattern.quotesこの関数を実行すると、修正されるはずです。

また、パターンを。で囲むこともできます^...$。それ以外の場合は、次のようなものを含む行を受け入れますThis is John (Smith) foobar.(入力のサブストリングと一致する場合は正規表現が喜ばれるため)。

于 2012-12-08T12:57:28.790 に答える