Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Регулярные выражения


Автор: Desperion 31.1.2012, 10:05
Недавно начал осваивать парсинг и работу с регулярными выражениями smile
Ради интереса решил сделать парсинг тегов с известного ресурса хабрахабр

Пример:
Код

<ul class="tags">
    <li ><a href="http://habrahabr.ru/tag/asp.net/" rel="tag">asp.net</a></li><li >, 
               <a href="http://habrahabr.ru/tag/asp.net mvc/" rel="tag">asp.net mvc</a></li><li >, 
               <a href="http://habrahabr.ru/tag/asp.net webforms/" rel="tag">asp.net webforms</a></li><li >, 
               <a href="http://habrahabr.ru/tag/visual studio/" rel="tag">visual studio</a></li><li >, 
                <a href="http://habrahabr.ru/tag/вебинары/" rel="tag">вебинары</a></li>
</ul>

Никак не получается составить выражение чтобы вытащить все эти теги хотя бы в массив (в дальнейшем планируется заносить в БД)
Подскажите пожалуйста, как этого добиться?smile Возможно стоит попробовать другой способ парсинга, буду очень рад любой помощи smile
Спасибо.

Автор: diadiavova 31.1.2012, 11:09
Цитата(Desperion @  31.1.2012,  11:05 Найти цитируемый пост)
Возможно стоит попробовать другой способ парсинга

 smile 
http://htmlagilitypack.codeplex.com/

Автор: Desperion 31.1.2012, 11:38
Спасибо большое за ссылочку smile
Получается, что в данном случае, получить тэги с помощью регулярок нет возможности?

Автор: diadiavova 31.1.2012, 11:39
Цитата(Desperion @  31.1.2012,  12:38 Найти цитируемый пост)
Получается, что в данном случае, получить тэги с помощью регулярок нет возможности? 

Есть, но это не лучший способ.

Автор: 502 31.1.2012, 11:40
Цитата(Desperion @  31.1.2012,  10:05 Найти цитируемый пост)
Никак не получается составить выражение чтобы вытащить все эти теги хотя бы в массив

как пробовал?

Автор: Desperion 31.1.2012, 11:49
Один из неудачных примеров :
Код

<a.*rel=""tag"">(?<temp>.*)</a>

крутил вертел по всякомуsmile читал в гугле примеры, пробовал, экспериментировал, но что то не выходит пока что smile сейчас буду читать материалы по ссылке выше smile

Автор: diadiavova 31.1.2012, 12:09
Цитата(Desperion @  31.1.2012,  12:49 Найти цитируемый пост)
<a.*rel=""tag"">(?<temp>.*)</a>

Если это немного подправить, то работать все таки будет
Код

var re = new Regex(@"<a\s+[^>]*rel=""tag"">(?<temp>.*)</a>");


Добавлено через 56 секунд
Но это никак не меняет того факта, что это не лучший способ smile 

Автор: Desperion 31.1.2012, 12:14
спасибо большое за подсказку и пример рабочий smile будем разбираться дальше

Автор: Desperion 31.1.2012, 12:49
Успех smile
Код

var Tags = new Regex(@"<a\s+[^>]*rel=""tag"">(?<temp>[^<]*)</a>");                    
                    Match m = Tags.Match(data);
                    while (m.Success)
                    {                        
                        Console.WriteLine(m.Groups["temp"].Value);
                        m = m.NextMatch();
                    }

Выводит
Цитата
asp.net
asp.net mvc
asp.net webforms
visual studio
вебинары

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)