python - 使用正则表达式匹配 HTML 中的一对注释

标签 python regex unit-testing mako

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

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

这样一来,如果我将 staff 变量传递为 True,则应该会显示这些评论。我正在尝试使用如下所示的正则表达式对此进行测试:

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

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

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

最佳答案

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

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

如果你有多个员工部分,你可能还想使匹配变得不贪婪:

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

关于python - 使用正则表达式匹配 HTML 中的一对注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/756898/

相关文章:

python - 来自已经分箱的数据的直方图,我有分箱和频率值

用 python 编写的类似 Javascript 的 TCP 套接字客户端?

regex - 将正则表达式与 `rename` 中的 `util-linux` 版本一起使用

jquery 解析大括号内的文本

ruby-on-rails - 你最喜欢的 ruby​​ 和 rails 测试 "gem(s)"或 "plugins"

python - 非常具体的子串检索和分割

通过 ctypes 使用 pcap 的 python 段错误

php - 用 BR 标签替换换行符,但只在 PRE 标签内

c# - 单元测试是否捕获到异常

unit-testing - 禁用 grails 命令对象中的验证约束以进行单元测试(使用 Spock)