Регулярные выражения: распарсить HTML-страницу - C#

Узнай цену своей работы

Формулировка задачи:

Привет всем! Подскажите, пожалуйста, пытаюсь спарсить с html документа нужную мне строку:
<tr id="tr_PROPERTY_1">
            <td class="adm-detail-valign-top" width="40%"><span class="adm-required-field">Значение</span>:</td>
            <td width="60%"><select name="PROP[1][]" size="1" ><option value="">(не установлено)</option><option value="1">135</option><option value="2">145</option><option value="3">155</option><option value="4">165</option><option value="5">175</option><option value="6">185</option><option value="7">195</option><option value="8">205</option><option value="9">215</option><option value="10" selected>225</option><option value="11">235</option><option value="12">245</option><option value="13">255</option><option value="14">265</option><option value="15">275</option><option value="16">285</option><option value="17">295</option><option value="18">305</option><option value="19">315</option><option value="20">325</option><option value="1121">31</option><option value="1061">20.5</option><option value="1063">23.5</option><option value="1057">16.0</option><option value="1122">32</option><option value="1066">6.25</option><option value="1069">7.5</option><option value="1058">16.9</option><option value="1052">12.00</option><option value="1050">10.00</option><option value="1065">6.00</option><option value="1070">7.50</option><option value="1062">21.5</option><option value="1125">35</option><option value="1072">9.00</option><option value="1051">11.00</option><option value="1120">30</option><option value="1123">33</option><option value="1059">17.5</option><option value="1124">34</option><option value="1054">14.00</option><option value="1064">28.1</option><option value="1071">8.25</option><option value="1073">9.5</option><option value="1056">16.00</option><option value="1068">7.00</option><option value="1126">36</option><option value="1060">18.0</option><option value="1055">15.00</option><option value="1053">13.00</option><option value="1067">6.50</option></select></td>
        </tr>
 
<tr id="tr_PROPERTY_2">
            <td class="adm-detail-valign-top" width="40%"><span class="adm-required-field">Значение2</span>:</td>
            <td width="60%"><select name="PROP[1][]" size="1" ><option value="">(не установлено)</option><option value="1">135</option><option value="2">145</option><option value="3">155</option><option value="4">165</option><option value="5">175</option><option value="6">185</option><option value="7">195</option><option value="8">205</option><option value="9">215</option><option value="10" selected>225</option><option value="11">235</option><option value="12">245</option><option value="13">255</option><option value="14">265</option><option value="15">275</option><option value="16">285</option><option value="17">295</option><option value="18">305</option><option value="19">315</option><option value="20">325</option><option value="1121">31</option><option value="1061">20.5</option><option value="1063">23.5</option><option value="1057">16.0</option><option value="1122">32</option><option value="1066">6.25</option><option value="1069">7.5</option><option value="1058">16.9</option><option value="1052">12.00</option><option value="1050">10.00</option><option value="1065">6.00</option><option value="1070">7.50</option><option value="1062">21.5</option><option value="1125">35</option><option value="1072">9.00</option><option value="1051">11.00</option><option value="1120">30</option><option value="1123">33</option><option value="1059">17.5</option><option value="1124">34</option><option value="1054">14.00</option><option value="1064">28.1</option><option value="1071">8.25</option><option value="1073">9.5</option><option value="1056">16.00</option><option value="1068">7.00</option><option value="1126">36</option><option value="1060">18.0</option><option value="1055">15.00</option><option value="1053">13.00</option><option value="1067">6.50</option></select></td>
        </tr>
<tr id="tr_PROPERTY_3">
            <td class="adm-detail-valign-top" width="40%"><span class="adm-required-field">Значение3</span>:</td>
            <td width="60%"><select name="PROP[1][]" size="1" ><option value="">(не установлено)</option><option value="1">135</option><option value="2">145</option><option value="3">155</option><option value="4">165</option><option value="5">175</option><option value="6">185</option><option value="7">195</option><option value="8">205</option><option value="9">215</option><option value="10" selected>225</option><option value="11">235</option><option value="12">245</option><option value="13">255</option><option value="14">265</option><option value="15">275</option><option value="16">285</option><option value="17">295</option><option value="18">305</option><option value="19">315</option><option value="20">325</option><option value="1121">31</option><option value="1061">20.5</option><option value="1063">23.5</option><option value="1057">16.0</option><option value="1122">32</option><option value="1066">6.25</option><option value="1069">7.5</option><option value="1058">16.9</option><option value="1052">12.00</option><option value="1050">10.00</option><option value="1065">6.00</option><option value="1070">7.50</option><option value="1062">21.5</option><option value="1125">35</option><option value="1072">9.00</option><option value="1051">11.00</option><option value="1120">30</option><option value="1123">33</option><option value="1059">17.5</option><option value="1124">34</option><option value="1054">14.00</option><option value="1064">28.1</option><option value="1071">8.25</option><option value="1073">9.5</option><option value="1056">16.00</option><option value="1068">7.00</option><option value="1126">36</option><option value="1060">18.0</option><option value="1055">15.00</option><option value="1053">13.00</option><option value="1067">6.50</option></select></td>
        </tr>
Я пытаюсь взять ее регулярными выражениями, вида:
var pattern = string.Format("<tr id=\"tr_PROPERTY_1\">.*</tr>");
                    var matches = Regex.Matches(list, pattern, RegexOptions.Multiline | RegexOptions.Compiled | RegexOptions.IgnoreCase);
                    foreach (Match match in matches)
                    {
                        test=match.Groups[1].Value;
                    }
Но строк совпадения у меня ноль. Как я понимаю, регулярные выражения обо что-то так сказать "запинаются", но понять обо что - не могу. Кто может показать в чем я ошибся? Заранее спасибо! А вообще, я еще хотел спросить, пока не забыл Мне нужно из каждого <tr> взять значение <option value="тут_случайная_цифра" selected>это_значение_нужно_взять</option> кто может подсказать, взять сразу это значение? Заранее спасибо!

Решение задачи: «Регулярные выражения: распарсить HTML-страницу»

textual
Листинг программы
            string property = Regex.Match(list, "<tr id=\"tr_PROPERTY_1\">[\\s\\n]+(.*\\s+.*)\\s.*<\\/tr>");
            var values = Regex.Matches(property, "<option value=\".+?\" selected>(.*?)<\\/option>");
            foreach (Match value in values) Console.WriteLine(value);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы