我正在尝试从市场网络中获取一些数据。 检查该网站后,我找到了我感兴趣的部分:
"<td>03/04/19</td> <td>2814.37</td> <td>2816.88</td> <td>2767.66</td> <td>2792.81</td> </tr> <tr> <td>03/01/19</td> <td>2798.22</td> <td>2808.02</td> <td>2787.38</td> <td>2803.69</td>"
我编写了以下代码来收集数据:
MatchCollection m1 = Regex.Matches(html, @"<td>(.+?)</td>", RegexOptions.Singleline);
我已经知道了......一行中的每个数据!
我想得到这样的东西:
03/04/19 2814.37 2816.88 2767.66 2792.81
03/01/19 2798.22 2808.02 2787.38 2803.69
… and so on…
我如何得到它?
先谢谢了。
答案 0 :(得分:0)
您的正则表达式看起来不错,您只需要对匹配结果进行分组即可。尝试以下代码:
var input = "<td>03/04/19</td> <td>2814.37</td> <td>2816.88</td> <td>2767.66</td> <td>2792.81</td> </tr> <tr> <td>03/01/19</td> <td>2798.22</td> <td>2808.02</td> <td>2787.38</td> <td>2803.69</td>";
var result = Regex.Matches(input, "<td>(.+?)</td>")
.Cast<Match>() // to enable Linq
.Select((m, i) => new {m, part = i / 5}) // here "5" is size of a group
.GroupBy(x => x.part, x => x.m)
.Select(x => string.Join(" ", x.Select(m => m.Groups[1].Value))) // create a single line from five matches
.ToArray();
现在,如果您将结果打印到控制台
foreach (var line in result)
Console.WriteLine(line);
您会得到
19年4月3日2814.37 2816.88 2767.66 2792.81
19/03/1 2798.22 2808.02 2787.38 2803.69