我有一个字符串和正则表达式从中获取参数。这是消息:
“数据流任务:错误:插入Destination.Inputs [OLE DB目标输入] .Columns [EmissionMarket]插入Destination.Inputs [OLE DB目标输入]时出错。返回的列状态为:\”该值违反了列的完整性约束。\“。”
这是正则表达式:
{数据流任务:错误:插入Destination.Inputs [OLE DB目标输入]上插入Destination.Inputs [OLE DB目标输入] .Columns [(。*?)]时出错。返回的列状态为:“该值违反了列的完整性约束。”。}
(两个字符串在运行时从VS复制,因此配额和方括号来自VS)
我看不出它们无法匹配的任何原因,但IsMatch方法返回false。我错过了什么?
答案 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)
正则表达式使用[
和]
来形成字符类。您需要至少将[
字符转义为\[
。您还需要转义.
的所有实例(您的意思是文字句点)(使用\.
代替),或者它将允许匹配该位置的任何字符。
答案 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\."\.