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 回答