簡體   English   中英

正則表達式匹配,級聯標簽

[英]Regex Matching, cascaded tags

嗨我想從下面的標簽中得到結果,我需要實現的是獲得標簽中的第一個匹配,然后是第五個匹配,然后是第九個匹配,所以第一個然后是第五個匹配。 所以我的結果是,注意我意識到這不是解析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

你能幫幫我嗎?

看起來你根本沒有檢查行號。 如果你只是添加一個計數器,那么檢查它的4的mod是否為零,你會好的。

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 ,然后由上述正則表達式匹配的分割操作的結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM