2013-05-08 3 views
0

Я получил название структурировано таким образом:регулярного выражения - получить определенную часть заголовка

<title>WebsiteName | Page title | Slogan</title> 

В настоящее время в C# я использую это, чтобы получить титул из:

Regex.Match(pageSource, 
       @"\<title\b[^>]*\>\s*(?<Title>[\s\S]*?)\</title\>", 
       RegexOptions.IgnoreCase).Groups["Title"].Value; 

Но, то, что я хочу выбраться, - это только название страницы.

+0

является то, что HTML вы разбор? – Anirudha

+0

Что именно вы хотите найти в названии, которое вы указали? Просто «Название страницы»? –

+1

Разделите свою проблему. Используйте som-форму инструмента разбора DOM для разбора html. См. Ответы ниже. Затем используйте регулярное выражение или простую строку. Настройте содержимое заголовка. – Mithon

ответ

1

Попробуйте это:

@"\<title[^>]*\>[^|]*\|\s*(?<Title>[^|]*?)\|[^<]*\</title\>" 

"\<title[^>]*\>" //Title tag 
"[^|]*"   //Everything up to the first pipe 
"\|\s*"   //First pipe and any leading white space 
"(?<Title>[^|]*?)" //The page title section between the pipes 
"\|"    //Second pipe 
"[^<]*\"   //Everything after the first pipe up to closing title tag 
"</title\>"  //closing title tag 
+0

Работали как шарм! Благодаря :) – ItsGreg

2

Если вы просто пытаетесь получить Page Title, попробуйте следующее:

\|(.*)\| 

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

3

Избегайте разбора html с regex.

Вы можете сделать это с помощью htmlAgilityPack


Это получит название HTML!

HtmlDocument doc = new HtmlDocument(); 
doc.Load(yourStream);  
string title=doc.DocumentNode.SelectSingleNode("//title").InnerText; 

Теперь после получения заголовка страницы вы можете получить необходимые данные с этого регулярного выражением

Учитывая Ваш титул всегда будет в той же форме, как указано в примере ваших Вы можете использовать

(?<=\|).+?(?=\|) 
+0

Я думаю, что он хочет «Название страницы» из тега названия? Это еще не совсем ясно ... –

+0

@AbeMiessler славный catch..would редактировать ans..thanks – Anirudha

+0

Моя первая мысль использовала HAP, но решила не вызывать, я думал, что это будет медленнее .. – ItsGreg

Смежные вопросы