我似乎找不到像以下示例中那样提取所有评论的方法。>>> import re>>> string = '''... <!-- one ... -->... <!-- two -- -- -->... <!-- three -->... '''>>> m = re.findall ( '<!--([^\(-->)]+)-->', string, re.MULTILINE)>>> m[' one \n', ' three ']With块two -- --不匹配,很可能是因为糟糕的正则表达式。有人可以指出正确的方向如何提取两个字符串之间的匹配项吗?嗨,我已经测试了你们在评论中提出的建议...。>>> m = re.findall ( '<!--(.*?)-->', string, re.MULTILINE)>>> m[' two -- -- ', ' three ']>>> m = re.findall ( '<!--(.*\n?)-->', string, re.MULTILINE)>>> m[' one \n', ' two -- -- ', ' three ']谢谢!
3 回答
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
通常,不可能使用规则语法在两个定界符之间进行任意匹配。
具体来说,如果您允许嵌套,
<!-- how do you deal <!-- with nested --> comments? -->
您会遇到问题。因此,尽管您可以使用正则表达式解决此特定问题,但是您编写的任何正则表达式都可能会被其他奇怪的注释嵌套破坏。
要解析任意注释,您需要继续使用解析上下文无关文法的方法。一种简单的方法是使用下推自动机。
添加回答
举报
0/150
提交
取消