正则表达式匹配,级联标签
本文关键字:级联 标签 正则表达式 | 更新日期: 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
拆分字符串,然后通过上面的正则表达式匹配拆分操作的结果。