正则表达式匹配,级联标签

本文关键字:级联 标签 正则表达式 | 更新日期: 2023-09-27 18:31:39

嗨,我正在尝试从下面的标签中获取结果,我需要实现的是获得标签中的第一个匹配项,然后是第五个匹配项,然后是第九个匹配项,所以第一个,然后是每五个匹配项。 所以我的结果将是,请注意,我意识到这不是解析 HTML 的最佳方式,但我真的只需要它

我正在使用的正则表达式是

<td class="stat">(.*?)<'/td>

我使用的代码是

private static ObservableCollection<Top> top = new ObservableCollection<Top>();
    
public void twit_topusers_DownloadStringCompleted(Object sender, DownloadStringCompletedEventArgs e)
    {
            string str;
            // Size the control to fill the form with a margin
            str = (string)e.Result;

             
            Regex r = new Regex("<td class='"stat'">(.*?)</td>");
            // Find a single match in the string.
            Match m = r.Match(str);
            


            while (m.Success)
            {
                testMatch = "";
                //
                testMatch += System.Text.RegularExpressions.Regex.Unescape(m.Groups[0].ToString()).Trim();
                
                top.Add(new Top(testMatch));
                m = m.NextMatch();
            }
            listBox.ItemsSource = top;
        
        
    }

    }

标签是

<td class="stat">14307149</td>//FIRST
<td class="stat">679761</td>
<td class="stat">3508</td>
<td class="stat">62 months ago</td>
<td class="stat">1430700</td>//FIFTH
<td class="stat">679761</td>
<td class="stat">3508</td>
<td class="stat">72 months ago</td>
<td class="stat">1430600</td>//NINTH
<td class="stat">679761</td>
<td class="stat">3508</td>
<td class="stat">82 months ago</td>

但我得到的结果是

匹配 1 14307149

匹配 2 679761

匹配 3 3508

匹配 4 62 个月前

匹配 5 1430700

匹配 6 679761

匹配 7 3508

匹配 8 72 个月前

比赛 9 14307149

匹配 10 679761

匹配 11 3508

匹配 12 62 个月前

我需要的结果是

匹配 1 14307149

匹配 2 1430700

匹配 3 1430600

你能帮我这个吗?

正则表达式匹配,级联标签

看起来您根本不是在检查行号。如果你只是添加一个计数器,然后检查它的 mod 4 是否为零,你会很好。

counter = 0;
while (m.Success)
{
        if( counter % 4 == 0 )
        {
            testMatch = "";
            //
            testMatch += System.Text.RegularExpressions.Regex.Unescape(m.Groups[0].ToString()).Trim();

            top.Add(new Top(testMatch));
            m = m.NextMatch();
        }
        counter++;
}

注意:我不是WP7开发人员,因此根据WP7编码系统的工作方式,此代码可能会略有偏差。

按如下方式更改它以仅匹配数字:

     <td class="stat">('d+)<'/td>

如果我弄错了,您必须首先按 months ago 拆分字符串,然后通过上面的正则表达式匹配拆分操作的结果。