【问题标题】:Regex error c#?正则表达式错误c#?
【发布时间】:2009-02-22 18:14:55
【问题描述】:

如何使用 "/show_name=(.?)&show_name_exact=true\">(.?)

    Match m = Regex.Match(input, "/show_name=(.*?)&amp;show_name_exact=true\">(.*?)</i", RegexOptions.IgnoreCase);
   // Check Match instance
    if (m.Success)
    {
        // Get Group value
        string key = m.Groups[1].Value;
        Console.WriteLine(key);
        // alternate-1
    }

错误,未终止的字符串文字(CS1039)] 错误,常量换行​​(CS1010)]

我做错了什么?

【问题讨论】:

    标签: c# regex


    【解决方案1】:

    我认为您将 .NET 的正则表达式语法与 PHP 的语法混为一谈。除了 C# 字符串文字所需的引号外,PHP 还要求您使用正则表达式分隔符。例如,如果您想在 PHP 中不区分大小写地匹配“foo”,您可以使用以下内容:

    '/foo/i'
    

    ...但是 C# 不需要额外的正则表达式分隔符,这意味着它不支持 /i 样式来添加匹配修饰符(无论如何这都是多余的,因为您还使用了 RegexOptions.IgnoreCase旗帜)。我想这就是你要找的:

    @"show_name=(.*?)&amp;show_name_exact=true"">(.*?)<"
    

    还要注意我是如何使用另一个引号而不是反斜杠来转义内部引号的。无论您使用老式的字符串文字语法还是带有前导“@”的 C# 逐字字符串(强烈建议编写正则表达式),都必须这样做。这就是您收到未终止字符串错误的原因。

    【讨论】:

      猜你喜欢
      • 2016-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-24
      • 1970-01-01
      • 2016-11-19
      • 2013-11-26
      相关资源
      最近更新 更多