Заголовочные файлы не обязательны.
#include
просто скопировать/вставить безотносительно включенного файла (включая.c исходные файлы)
Наиболее часто используемый в реальных проектах глобальные заголовочные файлы как config.h
и constants.h
, который содержит наиболее часто используемую информацию, такую как флаги времени компиляции и широкие константы проекта.
А хороший дизайн библиотеки API должен был бы представить официальный интерфейс с одним набором заголовочных файлов и использовать внутренний набор заголовочных файлов для реализации со всеми подробностями. Это добавляет хороший дополнительный слой абстракции к библиотеке C, не добавляя ненужное чрезмерное увеличение размера.
здравый смысл Использования. C/C++ не действительно для тех без него.
Используйте (
)
в регулярном выражении и group (1)
в Python для получения захваченной строки ( re.search
вернет None
, если не найдет результат, поэтому не используйте group ()
напрямую ):
title_search = re.search('<title>(.*)</title>', html, re.IGNORECASE)
if title_search:
title = title_search.group(1)
Попробуйте использовать группы захвата :
title = re.search('<title>(.*)</title>', html, re.IGNORECASE).group(1)
Попробуйте:
title = re.search('<title>(.*)</title>', html, re.IGNORECASE).group(1)
Думаю, этого должно хватить:
#!python
import re
pattern = re.compile(r'<title>([^<]*)</title>', re.MULTILINE|re.IGNORECASE)
pattern.search(text)
... предполагая, что ваш текст (HTML) находится в переменной с именем "text".
Это также предполагает, что нет другие HTML-теги, которые могут быть легально встроены в HTML-тег TITLE, и нет возможности легально встроить какой-либо другой символ <в такой контейнер / блок.
Однако ...
Не используйте регулярные выражения для разбора HTML в Python. Используйте парсер HTML! (Если вы не собираетесь писать полный синтаксический анализатор, что потребовало бы дополнительной работы, когда различные синтаксические анализаторы HTML, SGML и XML уже находятся в стандартных библиотеках.
Если вы обрабатываете «реальный мир» tag soup HTML (который часто не соответствует никаким валидаторам SGML / XML), затем используйте пакет BeautifulSoup . Это не ' t в стандартных библиотеках (пока), но широко рекомендуется для этой цели.
Другой вариант: lxml ... который написан для правильно структурированного (соответствующего стандартам) HTML. Но у него есть возможность вернуться к использованию BeautifulSoup в качестве парсера: ElementSoup .