Часть извлечения соответствия regex

  1. Заголовочные файлы не обязательны.

  2. #include просто скопировать/вставить безотносительно включенного файла (включая.c исходные файлы)

  3. Наиболее часто используемый в реальных проектах глобальные заголовочные файлы как config.h и constants.h, который содержит наиболее часто используемую информацию, такую как флаги времени компиляции и широкие константы проекта.

  4. А хороший дизайн библиотеки API должен был бы представить официальный интерфейс с одним набором заголовочных файлов и использовать внутренний набор заголовочных файлов для реализации со всеми подробностями. Это добавляет хороший дополнительный слой абстракции к библиотеке C, не добавляя ненужное чрезмерное увеличение размера.

  5. здравый смысл Использования. C/C++ не действительно для тех без него.

103
задан Peter Mortensen 27 July 2018 в 10:07
поделиться

5 ответов

Используйте ( ) в регулярном выражении и group (1) в Python для получения захваченной строки ( re.search вернет None , если не найдет результат, поэтому не используйте group () напрямую ):

title_search = re.search('<title>(.*)</title>', html, re.IGNORECASE)

if title_search:
    title = title_search.group(1)
155
ответ дан 24 November 2019 в 04:20
поделиться

Попробуйте использовать группы захвата :

title = re.search('<title>(.*)</title>', html, re.IGNORECASE).group(1)
6
ответ дан 24 November 2019 в 04:20
поделиться

re.search (' (. *) ', s, re.IGNORECASE). group (1)

3
ответ дан 24 November 2019 в 04:20
поделиться

Попробуйте:

title = re.search('<title>(.*)</title>', html, re.IGNORECASE).group(1)
2
ответ дан 24 November 2019 в 04:20
поделиться

Думаю, этого должно хватить:

#!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 .

1
ответ дан 24 November 2019 в 04:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: