两个字符串之间的正则表达式匹配?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (143)

我似乎无法找到像以下示例中提取所有注释的方法。

>>> import re
>>> string = '''
... <!-- one 
... -->
... <!-- two -- -- -->
... <!-- three -->
... '''
>>> m = re.findall ( '<!--([^\(-->)]+)-->', string, re.MULTILINE)
>>> m
[' one \n', ' three ']

two -- --由于不正确的正则表达式,块不可能匹配。如何匹配两个字符串之间的匹配呢?

提问于
用户回答回答于

这应该能起作用

 m = re.findall ( '<!--(.*?)-->', string, re.DOTALL)
用户回答回答于

一般来说,用正则语法在两个分隔符之间进行任意匹配是不可能的。

特别是,如果你允许嵌套,

<!-- how do you deal <!-- with nested --> comments? -->

你会遇到问题。

解析任意的注释,你需要转向解析上下文无关语法的方法。一个简单的方法是使用自动机

扫码关注云+社区

领取腾讯云代金券