如何在c#中的正则表达式语句中使用额外引用

时间:2015-08-03 17:28:24

标签: c# regex escaping

下面我有一个我正在研究很长一段时间的正则表达式。我遇到的问题是它们是我试图解析的很多引用(我认为这是我正在寻找的术语)所以Visual Studio对它很感兴趣。我试图使用转义字符修复此问题,但它仍然无法识别整个短语。

这是没有转义字符的短语:

string exceptionPattern = @"(?:(?:"([^"}]*)")|(\w+))\s*:\s*(?:(?:"([^"}]*)")|(\w+))";

只需使用此代码,我的代码中几乎每一行都会受到影响。以下是使用转义字符的代码:

string exceptionPattern = @"(?:(?:\"([^\"}]*)\")|(\w+))\s*:\s*(?:(?:\"([^\"}]*)\")|(\w+))";

一旦发挥作用,只有这条线不起作用。在VS中,([^ \接近开头的部分没有突出显示,这意味着它不在引号中。有没有人知道如何解决这个问题?

这是我想要匹配的字符串。注意:这不是JSON!我已经多次向开发人员证实了这个样本来自的数据库并确认它不是JSON,所以请不要尝试在此使用JSON。此外,我有正则表达式尝试匹配displayException和它之后的消息,以及异常和之后的消息,包括成功false,使用引号作为分裂点

{"data":"","displayException":"Invalid Account Status.  Please complete the registration process by clicking the verification link in your eTTek Dash Registration Verification email.  Please contact 1-800-341-6184 M-F 9a-5pm CT for further assistance.","exception":"UNABLE TO LOGIN","success":false}

1 个答案:

答案 0 :(得分:1)

在逐字字符串中,要转义双引号,您必须在""附近添加另一个双引号。因此,编译器将""视为双引号,否则它会将"视为逐字字符串的结尾。