Разбор HTML-абзаца между тегами <a> <p> <pre> <h1,…, 6> с использованием регулярных выражений [duplicate]

0

Привет всем, мне нужна помощь, вот мой код;

private void button1_Click(object sender, EventArgs e)
    {
        string s = KaynakKodunuCek("http://tr.wikipedia.org/wiki/Lale");
        // <a ... > </a> tagları arasını alıyor.(taglar dahil)
        Regex regex = new Regex("(?i)<a([^>]+)>(.+?)</a>");
        string gelen = s;
        string inside = null;
        Match match = regex.Match(gelen);
        if (match.Success)
        {
            inside= match.Value;
            richTextBox2.Text = inside;
        }
        string outputStr = "";
        foreach (Match ItemMatch in regex.Matches(gelen))
        {
            Console.WriteLine(ItemMatch);
            inside = ItemMatch.Value;
            //boşluk bırakıp al satır yazıyor 
            outputStr += inside + "\r\n";
        }
        richTextBox2.Text = outputStr;
    }

когда я нажимаю кнопку2, он анализирует html-коды на richtextbox2, но результат такой.

<a class="external text" href="//tr.wikipedia.org/w/index.php?title=%C3%96zel:G%C3%BCnl%C3%BCk&amp;type=review&amp;page=Lale">kontrol edilmiş</a> <a href="/wiki/Vikipedi:S%C3%BCr%C3%BCm_kontrol%C3%BC" title="Vikipedi:Sürüm kontrolü">kararlı sürüm</a> <a class="external text" href="//tr.wikipedia.org/w/index.php?title=Lale&amp;oldid=13373007&amp;diff=cur">1 değişiklik</a> <a href="#mw-navigation">kullan</a> <a href="#p-search">ara</a>

но я хочу видеть, что мои выходные только абзацы между тегами, например, >kontrol edilmiş<

Показать ещё 1 комментарий
Теги:

2 ответа

3

HTML не был разработан для анализа с регулярным выражением. Вам лучше использовать что-то вроде HTML Agility Pack.

0

Я не буду использовать регулярное выражение для выполнения этой задачи. Я хотел бы обратиться к Microsoft.mshtml и загрузить HTML-код в IHTMLDocument2, а затем использовать LINQ для получения элементов и внутреннего текста, о которых я заботился.

using mshtml;

// I wrapped the html you provided in some other tags
string html = @"<html><head><title>some title</title></head><body><div>" +
              @"<a class=""external text"" href=""//tr.wikipedia.org/w/index.php?title=%C3%96zel:G%C3%BCnl%C3%BCk&amp;type=review&amp;page=Lale"">kontrol edilmiş</a> <a href=""/wiki/Vikipedi:S%C3%BCr%C3%BCm_kontrol%C3%BC"" title=""Vikipedi:Sürüm kontrolü"">kararlı sürüm</a> <a class=""external text"" href=""//tr.wikipedia.org/w/index.php?title=Lale&amp;oldid=13373007&amp;diff=cur"">1 değişiklik</a> <a href=""#mw-navigation"">kullan</a> <a href=""#p-search"">ara</a>""" +
              @"</div></body></html>";

// Load the HTML into IHTMLDocument2
IHTMLDocument2 doc = new HTMLDocumentClass();
doc.write(html);

// Get the list of anchor tags
List<IHTMLElement> anchors = doc.all.Cast<IHTMLElement>().ToList().FindAll(e => e.tagName.ToLower() == "a");

// Do something with the inner text of the anchor tags
anchors.ForEach(a => MessageBox.Show(a.innerText));

Ещё вопросы

Сообщество Overcoder
Наверх
Меню