使用正则表达式在HTML中匹配一对注释

Jas*_*ker 1 python regex unit-testing mako

我有一个看起来像这样的mako模板:

% if staff:
    <!-- begin staff -->
    ...
    <!-- end staff -->
% endif
Run Code Online (Sandbox Code Playgroud)

这样,如果我将staff变量传递为True,那么这些注释应该出现.我试图通过使用如下所示的正则表达式来测试它:

re.search('<!-- begin staff -->.*<!-- end staff -->', text)
Run Code Online (Sandbox Code Playgroud)

我已经验证了注释出现在HTML输出中,但正则表达式不匹配.我甚至尝试通过re.escape 发表评论(<!-- begin staff --><!-- end staff -->),但仍然没有运气.我究竟做错了什么?

或者有更好的方法来运行此测试吗?

Gre*_*reg 9

默认情况下.,与换行符不匹配 - 您需要添加re.DOTALL选项.

re.search('<!-- begin staff -->.*<!-- end staff -->', text, re.DOTALL)
Run Code Online (Sandbox Code Playgroud)

如果您有多个职员部分,您可能还希望不匹配地进行匹配:

re.search('<!-- begin staff -->.*?<!-- end staff -->', text, re.DOTALL)
Run Code Online (Sandbox Code Playgroud)