使用正则表达式匹配 HTML 中的一对注释
-
09-09-2019 - |
题
我有一个 Mako 模板,看起来像这样:
% 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)
如果你有一个以上的员工部分,你可能还需要进行匹配ungreedy:
re.search('<!-- begin staff -->.*?<!-- end staff -->', text, re.DOTALL)
其他提示
使用 HTML 解析器,例如 HTML解析器 反而。看 您能否提供一些示例来说明为什么使用正则表达式解析 XML 和 HTML 很困难? 为什么。
不隶属于 StackOverflow