在正则表达式中获取组的值

本文关键字:获取 正则表达式 | 更新日期: 2023-09-27 18:36:33

在C#中,我的正则表达式有以下模式:

string pattern = "<div class='"alt'" title='"[''w''s]+'"><strong>([''w''s]+)</strong></div>";

我创建一个Match对象,如下所示:

status = Regex.Match(html, pattern);

但是,如果我在状态上调用 .groups(),即使有匹配项,我也会得到空白文本。我是否正确提取了组?

编辑:这是一些HTML,

          <tr>
            <td>
                    <div class="alt" title="Released to Manufacturing">
                            <strong>Released to Manufacturing</strong>

在正则表达式中获取组的值

string strRegex = @"<div class=""alt"" title=""['w's]+""><strong>(['w's]+)</strong></div>";
RegexOptions myRegexOptions = RegexOptions.IgnoreCase | RegexOptions.Multiline;
Regex myRegex = new Regex(strRegex, myRegexOptions);
string strTargetString = @"<div class=""alt"" title=""released""><strong>Released</strong></div>";
foreach (Match myMatch in myRegex.Matches(strTargetString))
{
    if (myMatch.Success)
    {
        var value = myMatch.Groups[1].Value;
    }
}

使用正则表达式英雄验证

正则表达式不用于解析 html。

使用 html 解析器,如 Htmlagilitypack

   HtmlDocument doc = new HtmlDocument();
   doc.Load(yourStream);
   var altElementValues= doc.DocumentNode
                            .SelectNodes("//div[@class='alt']/strong")
                            .Select(x=>x.InnerText);