2013-04-15 2 views
1

Мне было предоставлено это регулярное выражение для использования в проекте, и он, похоже, не работает правильно - он работал раньше в других приложениях.Почему regex match выбрасывает исключение?

Это говорит мне parsing "((^[^_]{1}\S{1,40})\_(\S{5,6})\_(\S{1,4})\_(\S{1,4})\_(\S{4,6}))(\.{1}\S{1,5})$" - Unrecognized escape sequence \_.

У меня есть регулярное выражение в файле в виде константы:

public static string MatchDocument = @"((^[^_]{1}\S{1,40})\_(\S{5,6})\_(\S{1,4})\_(\S{1,4})\_(\S{4,6}))(\.{1}\S{1,5})$"; 

Я не то, что опыт работы с регулярными выражениями, но я предположил, предваряя строку с @ будет решать любые проблемы с обратной косой чертой ... почему это не работает?

ответ

5

Это означает, что именно он говорит.

\_ не является escape-последовательностью регулярного выражения (в контексте регулярных выражений .NET).

Если вы хотите подчеркнуть, просто используйте _.

1

Ваша строка содержит несколько экземпляров \_. Это недействительный escape-код.

0

Подчеркнутый символ является буквальным и не нуждается в экранировании.

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