带引号的正则表达式语法

时间:2012-07-23 10:17:18

标签: c# regex syntax

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

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

但由于引号,语法错误。我尝试用'替换它们 但它没有找到任何东西。

正则表达式字符串正在按顺序工作,而不是这些引号。我试图照看像空格这样的替换 - &gt; / s并没有找到任何东西。

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

使用盾牌符号

@""""; //"

"\""; //"

答案 2 :(得分:0)

您尚未转义引号,但无论如何都不应使用正则表达式来解析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);
    }
}