2012-09-10 6 views
0

Учитывая следующее содержание HTML (ограничено до абсолютного минимума я требую):Extract название от содержания HTML

enter image description here

Как я смог бы извлечь Page Title с помощью Regex?

+0

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

+0

Нет, просто название. – Daan

+1

Вы можете посмотреть [это] (http://stackoverflow.com/a/1732454/148481) ответить –

ответ

1

Как прокомментировали другие, регулярные выражения могут не подходить для пуленепробиваемого метода. Например. используя regex, было бы трудно проверить, был ли тег <title> частью кавычки в HTML. Это повторяющийся ответ на StackOverflow для таких вопросов. Но лично я думаю, что у вас есть точка зрения, что парсер будет излишним для такого простого извлечения. Если вы ищете метод, который работает больше всего того времени, одно из следующих действий должно быть выполнено.

Вариант 1: касательно предшествующий текст/опережение

(?<=<title[\s\n]*>[\s\n]*)(.(?![\s\n]*</title[\s\n]*>))* 

Это использует lookbehind and lookahead для тегов - .NET имеет сложный механизм регулярных выражений, что позволяет для бесконечного повторения, так что вы можете даже проверить пробельный/возврат расположенных между имя тега и конечную скобку (см. this answer).

Вариант 2: Захват группа

<title[\s\n]*>[\s\n]*(.*)[\s\n]*</title[\s\n]*> 

Аналогичной, но несколько проще - весь матч регулярного выражения включает в себя начальные и конечные тег. Первая (и только) группа захвата (.*) захватывает бит, который представляет интерес между ними.

Визуализация: Regular expression visualization

Edit live on Debuggex

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