正则表达式在两个注释之间获取html

本文关键字:注释 之间 获取 html 两个 正则表达式 | 更新日期: 2023-09-27 18:29:08

我正在尝试获取到注释之间的HTML片段。

稍后我需要在开始/结束之间解析HTML。

我实际上是在阅读一个html文件,但出于测试目的,我模拟了以下内容:

        string emailFeedTxtStart = "<!--FEED FOR RECEIPT GOES HERE-->";
        string emailFeedTxtEnd = "<!--FEED FOR RECEIPT ENDS HERE-->";
        string html =
            emailFeedTxtStart + Environment.NewLine +
            @"<td align=""center"">" + Environment.NewLine +
            @"<table style=""table-layout:fixed;width:380px"" border=""0"" cellspacing=""0""             cellpadding=""0"">" + Environment.NewLine +
            "<tbody>" + Environment.NewLine +
            "<tr>" + Environment.NewLine +
            "<td>" + Environment.NewLine +
            "</td>" + Environment.NewLine +
            "</tr>" + Environment.NewLine +
            "</tbody>" + Environment.NewLine +
            "</table>" + Environment.NewLine +
            "</td>"  + Environment.NewLine +
            emailFeedTxtEnd; 
        string patternstart = Regex.Escape(emailFeedTxtStart);
        string patternend = Regex.Escape(emailFeedTxtEnd);
        string regexexpr = patternstart + @"(.*?)" + patternend;
        //string regexexpr = @"(?<=" + patternstart + ")(.*?)(?=" + patternend + ")";
        MatchCollection matches = Regex.Matches(@html, @regexexpr);

返回的匹配项为0。

(请注意,之间有更多的HTML)。

如有任何帮助,我们将不胜感激。

正则表达式在两个注释之间获取html

之后您将用什么来解析HTML?因为可能有一种方法可以省去事先实际操作HTML字符串的麻烦。无论如何,这里有一个解决方案:

    string afterFirst = html.Substring(Regex.Match(html, emailFeedTxtStart).Index + emailFeedTxtStart.Length);
    string between = afterFirst.Substring(0, Regex.Match(afterFirst, emailFeedTxtEnd).Index);