Сопоставление пары комментариев в HTML с использованием регулярных выражений - PullRequest
1 голос
/ 16 апреля 2009

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

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

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

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

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

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

Ответы [ 2 ]

9 голосов
/ 16 апреля 2009

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

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

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

re.search('<!-- begin staff -->.*?<!-- end staff -->', text, re.DOTALL)
2 голосов
/ 16 апреля 2009
...