C# C无效的文字字符

C# C无效的文字字符,c#,regex,C#,Regex,我创建了一个工作PCRE正则表达式,用于查找在C中引发解析器错误的邮箱地址条目 错误是由于\。和\s我的模式中的字符 错误是:无效的文字字符 这是正则表达式 下面是实现 有人能帮我解决这个问题吗 谢谢,因为反斜杠。将正则表达式设置为逐字字符串文字。双引号内的单反斜杠将被视为转义序列 @"^(?!.*p\.?o\.?\s+?box).*$" 逐字字符串文字由@字符后跟双引号字符、零个或多个字符以及结束双引号字符组成。一个简单的例子是@hello。在逐字字符串文字中,分隔符之间的字符将逐字解释,唯

我创建了一个工作PCRE正则表达式,用于查找在C中引发解析器错误的邮箱地址条目

错误是由于\。和\s我的模式中的字符

错误是:无效的文字字符

这是正则表达式

下面是实现

有人能帮我解决这个问题吗


谢谢,因为反斜杠。将正则表达式设置为逐字字符串文字。双引号内的单反斜杠将被视为转义序列

@"^(?!.*p\.?o\.?\s+?box).*$"
逐字字符串文字由@字符后跟双引号字符、零个或多个字符以及结束双引号字符组成。一个简单的例子是@hello。在逐字字符串文字中,分隔符之间的字符将逐字解释,唯一的例外是引号转义序列。特别是,简单转义序列以及十六进制和Unicode转义序列不以逐字字符串文字处理。逐字字符串文字可以跨越多行


由于反斜杠被视为转义字符,因此您需要将字符串作为逐字字符串:

@"^(?!.*p\.?o\.?\s+?box).*$"
或者你需要放两个反斜杠,而不是像下面这样的一个:

"^(?!.*p\\.?o\\.?\\s+?box).*$"

需要更多的上下文,@符号告诉编译器将其视为一个文本,只是说因为反斜杠不是一个真正合适的答案,从技术上讲,这不是PCRE,尽管它使用相同的语法。
@"^(?!.*p\.?o\.?\s+?box).*$"
"^(?!.*p\\.?o\\.?\\s+?box).*$"