0

次の入力で IsMatches 関数が false を返す理由を知りたいです。私のパターンの問題は何ですか。どうもありがとう。

var input = @"/****** Object:  Table [etc_abc]    Script Date: 11/27/2012 13:24:26 ******/";

    public bool IsMatched(string input)
    {
        var match = Regex.Match(input, @"/\*+\sObject:\s+Table\s+[\[[a-zA-Z0-9_\\]+\]\.]??(\[[a-zA-Z0-9_\\]+\])", RegexOptions.Compiled | RegexOptions.IgnoreCase);
        return match.Success;
    }
4

1 に答える 1

1

特にC#の正規表現については知りませんが、この部分は怪しいと思われます: [\[[a-zA-Z0-9_\\]+\]\.]??.

これを文字クラスとして扱いたくない場合は、おそらくグループとして扱いたいので、角括弧の代わりに単純な括弧を使用してください:(\[[a-zA-Z0-9_\\]+\]\.)??

したがって、これはあなたのために働くかもしれません:@"/\*+\sObject:\s+Table\s+(\[[a-zA-Z0-9_\\]+\]\.)??(\[[a-zA-Z0-9_\\]+\])"

于 2012-12-05T23:24:39.117 に答える