我想知道为什么,通过以下输入,函数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;
}
答案 0 :(得分:1)
我特别不了解C#正则表达式,但这部分看起来很可疑:[\[[a-zA-Z0-9_\\]+\]\.]??
。
您不希望将此视为字符类,您可能希望将其视为一个组,因此请使用简单的括号而不是方括号:(\[[a-zA-Z0-9_\\]+\]\.)??
所以这可能对您有用:@"/\*+\sObject:\s+Table\s+(\[[a-zA-Z0-9_\\]+\]\.)??(\[[a-zA-Z0-9_\\]+\])"