C# IsMatch方法在不应';T

C# IsMatch方法在不应';T,c#,regex,C#,Regex,我有一个字符串和正则表达式从中获取参数。以下是信息: “数据流任务:错误:插入目标时出错。输入[OLE DB Destination Input]。插入目标上的列[EmissionMarket]。输入[OLE DB Destination Input]。返回的列状态为:\“该值违反了列的完整性约束。\” 以下是regexp: {数据流任务:错误:插入目标时出错。输入[OLE DB Destination Input]。插入目标上的列[(.*)]。输入[OLE DB Destination Inp

我有一个字符串和正则表达式从中获取参数。以下是信息:

“数据流任务:错误:插入目标时出错。输入[OLE DB Destination Input]。插入目标上的列[EmissionMarket]。输入[OLE DB Destination Input]。返回的列状态为:\“该值违反了列的完整性约束。\”

以下是regexp:

{数据流任务:错误:插入目标时出错。输入[OLE DB Destination Input]。插入目标上的列[(.*)]。输入[OLE DB Destination Input]。返回的列状态为:“该值违反了列的完整性约束。”。}

(这两个字符串在运行时都是从VS复制的,因此配额和方括号都是从VS复制的)

我看不出它们不匹配的任何原因,但IsMatch方法返回false。我遗漏了什么?

这是因为“[”和“]”字符。您需要为正则表达式转义它们,否则它们将被视为字符类。换句话说,您需要:

Data Flow Task:Error: There was an error with Insert Destination.Inputs\[OLE DB Destination Input\].Columns\[(.*?)\] on Insert Destination.Inputs\[OLE DB Destination Input\]. The column status returned was: "The value violated the integrity constraints for the column.".

正则表达式使用
[
]
形成字符类。您至少需要将
[
字符转义为
\[
。您还需要转义
的所有实例,即一个文字句点(使用
\.
),否则它将允许匹配该位置的任何字符


有关详细信息,请参见。

您需要对多个字符进行换码

[]
在正则表达式中都有特殊的含义,通常所有包含它的字符都需要转义
\

根据您的样本,结果如下:

"Data Flow Task:Error: There was an error with Insert Destination\.Inputs\[OLE DB Destination Input\]\.Columns\[(.*?)\] on Insert Destination\.Inputs\[OLE DB Destination Input\]\. The column status returned was\: "The value violated the integrity constraints for the column\."\.

提示:您需要转义其中一些字符。
[]
s应该转义。非常感谢,错过了这一方面