Я использую следующий код для поиска данных на веб-странице и возврата данных в da datagridview.Случайная ошибка в Regexp
Когда я использую его с веб-страницы, которая имеет много строк, как 100, некоторое время он будет возвращать багги линию так: CaucaiaCE
и должен быть только Каукая
Почему это происходит только в 2 линиях из 100?
это HTML I`m поиска http://pastie.org/8220836
{
int i = 0;
Match matchLogradouro = Regex.Match(pagina, "<td width=\"268\" style=\"padding: 2px\">(.*)</td>");
Match matchBairroCidade = Regex.Match(pagina, "<td width=\"140\" style=\"padding: 2px\">(.*)</td>");
Match matchEstado = Regex.Match(pagina, "<td width=\"25\" style=\"padding: 2px\">([A-Z]{2})</td>");
Match matchCep = Regex.Match(pagina, "<td width=\"65\" style=\"padding: 2px\">(.*)</td>");
int z = Regex.Matches(pagina, "detalharCep").Count;
while (z > i -1)
{
dataGridView1.Rows.Add(matchLogradouro.Groups[1].Value);
matchLogradouro = matchLogradouro.NextMatch();
dataGridView1.Rows[i].Cells[1].Value = matchBairroCidade.Groups[1].Value;
matchBairroCidade = matchBairroCidade.NextMatch();
dataGridView1.Rows[i].Cells[2].Value = matchBairroCidade.Groups[1].Value;
matchBairroCidade = matchBairroCidade.NextMatch();
dataGridView1.Rows[i].Cells[3].Value = matchEstado.Groups[1].Value;
matchEstado = matchEstado.NextMatch();
dataGridView1.Rows[i].Cells[4].Value = matchCep.Groups[1].Value;
matchCep = matchCep.NextMatch();
i++;
}
}
Я вижу много жадных операторов ... попробуйте использовать '(. *?)' Вместо этого в каждом из ваших регулярных выражений. – Jerry
[Не использовать регулярное выражение для разбора HTML!] (Http://stackoverflow.com/a/1732454/1336590) – Corak
Черт @ Корак, я как раз собирался написать то же самое!^_^В этом случае, чтобы суммировать ... Вы пытались использовать синтаксический анализатор XML вместо этого? : D – Shaamaan