【问题标题】:Regex syntax with quotes带引号的正则表达式语法
【发布时间】:2012-07-23 10:17:17
【问题描述】:

我正在尝试在我的代码中运行一个正则表达式字符串,它将获取<li class="f"</li> 之间的所有内容

string regex = @"\<li\sclass="f"(\s*?.*?)*?\</li>";

但是由于引号,语法是错误的。我尝试用 ' 替换它们 但它什么也没找到。

顺便说一句,正则表达式字符串正在工作,只是这些引号不是。我试图照顾一些像 space-->/s 这样的替代品,但没有找到任何东西。

【问题讨论】:

  • 这恐怕和RegEx关系不大,因为它只是一个C#问题

标签: c# regex syntax


【解决方案1】:

要转义字符串中的引号,请将它们加倍:

string regex = @"<li\sclass=""f""(.*?)</li>";

我还稍微“修复”了您的正则表达式,但使用正则表达式解析 HTML 仍然不是一个好主意。

【讨论】:

    【解决方案2】:

    使用盾牌符号

    @""""; //"

    "\""; //"

    【讨论】:

      【解决方案3】:

      您没有转义引号,但无论如何都不应该使用正则表达式来解析 HTML。使用HtmlAgilityPack 之类的东西,然后按照这些行编写代码;

      static void Main(string[] args)
      {
          HtmlDocument doc = new HtmlDocument();
          doc.Load("file.htm");
      
          var results = doc.DocumentNode
              .SelectNodes("//li[contains(@class, 'f')]")
              .Select(x => x.InnerHtml);
      
          foreach (string result in results)
          {
              Console.WriteLine(result);
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2020-11-06
        • 2015-03-24
        • 2010-09-18
        • 1970-01-01
        • 1970-01-01
        • 2022-08-12
        相关资源
        最近更新 更多