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

时间:2013-04-15 16:06:52

标签: c# regex

我已经获得了这个正则表达式在项目中使用,它似乎没有正常工作 - 它之前在其他应用程序中有效。

它告诉我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})$";

我不是那种使用正则表达式的经验,但我认为在@之前添加字符串可以解决任何反斜杠问题......为什么这不起作用?

3 个答案:

答案 0 :(得分:5)

这正是它所说的内容。

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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