Сопоставление пары комментариев в HTML с помощью регулярных выражений

StackOverflow https://stackoverflow.com/questions/756898

Вопрос

У меня есть шаблон Мако, который выглядит примерно так:

% if staff:
    <!-- begin staff -->
    ...
    <!-- end staff -->
% endif

Таким образом, если я передам переменную Staff как True, эти комментарии должны появиться.Я пытаюсь проверить это, используя регулярное выражение, которое выглядит так:

re.search('<!-- begin staff -->.*<!-- end staff -->', text)

Я проверил, что комментарии появляются в выводе HTML, но регулярное выражение не соответствует.Я даже пробовал оставлять комментарии (<!-- begin staff --> и <!-- end staff -->) через re.escape, но все равно безуспешно.Что я делаю не так?

Или есть лучший способ запустить этот тест?

Это было полезно?

Решение

По умолчанию . не соответствует символу новой строки — вам нужно добавить re.DOTALL вариант.

re.search('<!-- begin staff -->.*<!-- end staff -->', text, re.DOTALL)

Если у вас более одного раздела персонала, вы также можете сделать сопоставление нежадным:

re.search('<!-- begin staff -->.*?<!-- end staff -->', text, re.DOTALL)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top