IsMatch方法在不应该返回false时返回false

时间:2014-09-02 17:26:34

标签: c# regex

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

  

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

这是正则表达式:

  

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

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

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

3 个答案:

答案 0 :(得分:1)

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

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.".

答案 1 :(得分:1)

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

有关详细信息,请参阅Regular Expression Language - Quick Reference

答案 2 :(得分:1)

你需要花几个字符

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

根据您的示例,结果将类似于:

"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\."\.

Online Demo