Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2009, 21:18   #1
CWD
Пользователь
 
Регистрация: 10.11.2009
Сообщений: 50
По умолчанию Regex

Доброго времени суток если не сложно помогите составить запрос. Я новичек у меня не получается.
Код:
using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            string test = "<a  id='none-active-item' >Т/с «Мятежный путь»</a><a  class='in-genres-channel' >&nbsp;Сити</a></td></tr></table></td></tr><tr><td colspan='2' style='padding-left: 10px;'><table cellspacing='0' cellpadding='0'><tr><td class='time'>17:35</td><td class='item'  ><a href='/rew/g/10112009/bid7/id24156/tmnow/' >Т/с &quot;Охота на Вервольфа&quot;</a><a  class='in-genres-channel' style='color: #666666;' >&nbsp;ICTV</a></td></tr></table></td></tr><tr><td colspan='2' style='padding-left: 10px;'><table cellspacing='0' cellpadding='0'><tr><td class='time'>17:35</td><td class='item'  ><a href='/rew/g/10112009/bid10/id16818/tmnow/' >Т/с &quot;Тысяча витрин&quot;</a><a  class='in-genres-channel' style='color: #666666;' >&nbsp;К2</a>&nbsp;<img src='/i/stars/35o5.gif' width='56' height='10' valign='absmiddle'>&nbsp;<img src='/i/uploads/zelenuj_krug.gif' alt='разрешается смотреть детям' title='разрешается смотреть детям' border='0'></td></tr></table></td></tr><tr><td colspan='2' style='padding-left: 10px;'><table cellspacing='0' cellpadding='0'><tr><td class='time'>17:50</td><td class='item'  ><a href='/rew/g/10112009/bid13/id15300/tmnow/' >Т/с &quot;Папины дочки&quot;</a><a  class='in-genres-channel' style='color: #666666;' >&nbsp;1+1</a>&nbsp;<img src='/i/stars/45o5.gif' width='56' height='10' valign='absmiddle'>&nbsp;<img src='/i/uploads/zelenuj_krug.gif' alt='разрешается смотреть детям' title='разрешается смотреть детям' border='0'></td></tr></table></td></tr><tr><td colspan='2' style='padding-left: 10px;'><table cellspacing='0' cellpadding='0'><tr><td class='time'>18:00</td><td class='item'  ><a href='/rew/g/10112009/bid14/id21688/tmnow/' >Т/с &quot;Однажды будет любовь&quot;</a><a  class='in-genres-channel' style='color: #666666;' >&nbsp;Украина</a>&nbsp;<img src='/i/stars/4o5.gif' width='56' height='10' valign='absmiddle'>";
            Regex theRegex = new Regex(@"(&|;)\W");
            StringBuilder sBuilder = new StringBuilder();
            int id = 1;
            foreach (string substring in theRegex.Split(test))
            {
                sBuilder.AppendFormat("{0}:{1}\n",id++,substring);
            }
            Console.WriteLine("{0}",sBuilder);
        }
    }
}
На выходе хочу получить строчки вида "Охота на Вервольфа", "Однажды будет любовь".
CWD вне форума Ответить с цитированием
Старый 11.11.2009, 11:58   #2
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Код:
 Regex theRegex = new Regex(@"(&|;)\W");
Не очень понятна эта строка. Вам бы найти Т/с &quot; и &quot;</a><a class='in-genres-channel' и между ними достать слова Охота на Вервольфа.
Hollander вне форума Ответить с цитированием
Старый 11.11.2009, 12:09   #3
CWD
Пользователь
 
Регистрация: 10.11.2009
Сообщений: 50
По умолчанию

Цитата:
Сообщение от Hollander Посмотреть сообщение
Код:
 Regex theRegex = new Regex(@"(&|;)\W");
Не очень понятна эта строка. Вам бы найти Т/с &quot; и &quot;</a><a class='in-genres-channel' и между ними достать слова Охота на Вервольфа.

Да верное получается надо написать регулярное выражение для "парсинга", слов между "&quot; и &quot;", только я не знаю как это сделать.

Код:
 Regex theRegex = new Regex(@"(&|;)\W");
Было написано просто так что бы понять как программа "парсит".

Последний раз редактировалось CWD; 11.11.2009 в 12:15.
CWD вне форума Ответить с цитированием
Старый 11.11.2009, 12:56   #4
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

У вас такая строка, что именно эти два слова получить невозможно, т.к. в исходной строке все слова записаны в одинаковой конструкции.
Я заметил, что все слова находятся в ссылках, попробуй этот код(он достает все ссылки из html страницы).
На выходе получается список объектов LinkItem, которого Href - ссылка, Text - текст, заключенный в теги <a> </a>.
Код:
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;

namespace TMMatchReport.ParserUtils
{
	
		public struct LinkItem
		{
			public string Href;
			public string Text;

			public override string ToString()
			{
				return Href + "\n\t" + Text;
			}
		}

		
	/// <summary>
	/// Description of LinkFinder.
	/// </summary>
	public static class LinkFinder
	{
		public static List<LinkItem> Find(string file)
			{
				List<LinkItem> list = new List<LinkItem>();

				// 1.
				// Find all matches in file.
				MatchCollection m1 = Regex.Matches(file, @"(<a.*?>.*?</a>)",
				                                   RegexOptions.Singleline);

				// 2.
				// Loop over each match.
				foreach (Match m in m1)
				{
					string value = m.Groups[1].Value;
					LinkItem i = new LinkItem();

					// 3.
					// Get href attribute.
					Match m2 = Regex.Match(value, @"href=(.*?)>",
					                       RegexOptions.Singleline);
					if (m2.Success)
					{
						i.Href = m2.Groups[1].Value;
					}

					// 4.
					// Remove inner tags from text.
					string t = Regex.Replace(value, @"\s*<.*?>\s*", "",
					                         RegexOptions.Singleline);
					i.Text = t;

					list.Add(i);
				}
				return list;
			}
	}
}
Hollander вне форума Ответить с цитированием
Старый 12.11.2009, 01:16   #5
CWD
Пользователь
 
Регистрация: 10.11.2009
Сообщений: 50
По умолчанию

Что то проблема не решается, в конечном итоге LinkItem не может преобразоваться в текст и ничего не выводится, буду благодарен за работающий код.
CWD вне форума Ответить с цитированием
Старый 12.11.2009, 15:16   #6
Hollander
Участник клуба
 
Аватар для Hollander
 
Регистрация: 03.05.2007
Сообщений: 1,189
По умолчанию

Цитата:
Сообщение от CWD Посмотреть сообщение
Что то проблема не решается, в конечном итоге LinkItem не может преобразоваться в текст и ничего не выводится, буду благодарен за работающий код.
У LinkItem есть два поля. Одно из них Text, в нем и должен храниться текст ссылки.
Hollander вне форума Ответить с цитированием
Старый 14.11.2009, 23:42   #7
CWD
Пользователь
 
Регистрация: 10.11.2009
Сообщений: 50
По умолчанию

Что то после долгих мучительных попыток вывести на экран ничего не получилось, возможно кто то из форумчан напишет код полностью?Буду признателен.
CWD вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц