2014-09-02 3 views
1

У меня есть строка и регулярное выражение, чтобы получить от него параметр. Вот сообщение:Метод IsMatch возвращает false, когда он не должен

"Data Flow Task:Error: There was an error with Insert Destination.Inputs[OLE DB Destination Input].Columns[EmissionMarket] 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.".}

(обе строки копируются из VS во время выполнения, поэтому квоты и квадратные скобки из VS)

Я не могу видеть любая причина, по которой они не могут совпадать, но метод IsMatch возвращает false. Что мне не хватает?

+0

Подсказка: Вам нужно чтобы избежать некоторых из этих символов. – hwnd

+0

'[]' s должно быть экранировано. – PoweredByOrange

ответ

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

Регулярные выражения используют [ и ] для формирования классов персонажей. Вам необходимо убрать хотя бы символ [ как \[. Вам также нужно избегать всех экземпляров ., которые вы имеете в виду буквальный период (вместо этого используется \.), или это позволит сопоставить любой символ в этом месте.

Для получения дополнительной информации см. Regular Expression Language - Quick Reference.

+0

Большое спасибо, пропустил этот аспект – KorsaR

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

Смежные вопросы