【问题标题】:How to use extra quotations in a regex statement in c#如何在 c# 的正则表达式语句中使用额外的引号
【发布时间】:2015-08-03 17:28:24
【问题描述】:

下面是我已经研究了很长时间的正则表达式语句。我遇到的问题是他们有很多我试图解析的引文(我认为这是我正在寻找的术语),所以 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}

【问题讨论】:

  • 使用""转义"
  • 在逐字字符串文字中,要键入",您需要像"" 一样将其翻倍。你能提供一个示例字符串来匹配吗?
  • @stribizhev 我在代码中提供了一个示例字符串
  • 是的,jsonlint.com 说它是一个有效的 JSON 字符串。我建议尝试使用 JSON 库来处理此类字符串。
  • @AvinashRaj 谢谢。如果您以答案的形式发表评论,我会给您最佳答案

标签: c# regex escaping


【解决方案1】:

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

【讨论】:

  • 我只想注意术语:在逐字字符串文字中。请参阅2.4.4.5 String literalsC# 支持两种形式的字符串文字:常规字符串文字逐字字符串文字.
  • 是的,我提到了逐字字符串。
猜你喜欢
  • 1970-01-01
  • 2020-07-19
  • 1970-01-01
  • 1970-01-01
  • 2022-12-10
  • 2012-06-28
  • 2020-11-06
  • 2021-09-02
  • 1970-01-01
相关资源
最近更新 更多