C# 为什么正则表达式匹配抛出异常?

C# 为什么正则表达式匹配抛出异常?,c#,regex,C#,Regex,我得到了这个正则表达式,可以在项目中使用,但它似乎工作不正常——它以前在其他应用程序中工作过 它告诉我parsing“(^[^^]{1}\S{1,40})\\\\\(\S{5,6})\\\\\(\S{1,4})\\\(\S{1,4})\\\(\S{4,6}))(\.{1}\S{1,5})$”-无法识别的转义序列\ 我将正则表达式作为常量保存在文件中: public static string MatchDocument = @"((^[^_]{1}\S{1,40})\_(\S{5,6})\_(\

我得到了这个正则表达式,可以在项目中使用,但它似乎工作不正常——它以前在其他应用程序中工作过

它告诉我
parsing“(^[^^]{1}\S{1,40})\\\\\(\S{5,6})\\\\\(\S{1,4})\\\(\S{1,4})\\\(\S{4,6}))(\.{1}\S{1,5})$”-无法识别的转义序列\

我将正则表达式作为常量保存在文件中:

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

我没有使用正则表达式的经验,但我认为在字符串前面加上
@
可以解决任何反斜杠问题……为什么不这样做呢?

它的意思就是它所说的

\\
不是正则表达式转义序列(在.NET风格的正则表达式中)


如果你想要一个下划线,只需使用

它的意思就是它所说的

\\
不是正则表达式转义序列(在.NET风格的正则表达式中)


如果需要下划线,只需使用
\

您的字符串包含多个
\\
实例。这不是有效的正则表达式转义。

您的字符串包含多个
\\
的实例。这不是有效的正则表达式转义。

下划线是文字字符,不需要转义

下划线是文字字符,不需要转义