1

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

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

这样,如果我将工作人员变量作为 True 传递,那么应该会出现这些注释。我正在尝试使用如下所示的正则表达式来测试它:

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

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

或者有没有更好的方法来运行这个测试?

4

2 回答 2

9

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

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

如果您有多个员工部分,您可能还希望使匹配不贪心:

re.search('<!-- begin staff -->.*?<!-- end staff -->', text, re.DOTALL)
于 2009-04-16T16:21:01.017 回答
2

请改用HTMLParser之类的 HTML Parser 。请参阅您能否提供一些示例,说明为什么使用正则表达式难以解析 XML 和 HTML?为什么。

于 2009-04-16T16:22:47.237 回答