首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >两个字符串之间的正则表达式匹配?

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

Stack Overflow用户
提问于 2012-10-05 05:16:19
回答 2查看 37.5K关注 0票数 18

我似乎找不到一种方法来提取所有评论,就像下面的例子。

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

带有two -- --的块最有可能是因为错误的正则表达式而不匹配。谁能给我指出正确的方向如何提取两个字符串之间的匹配。

嗨,我已经测试了你们在评论中提出的建议...这是一个很小的升级就可以工作的解决方案。

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

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-05 05:24:10

这应该能起到作用

 m = re.findall ( '<!--(.*?)-->', string, re.DOTALL)
票数 38
EN

Stack Overflow用户

发布于 2012-10-05 05:25:10

通常,不可能使用regular grammar在两个分隔符之间进行任意匹配。

具体地说,如果您允许嵌套,

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

你会遇到问题的。因此,虽然您可以使用正则表达式解决此特定问题,但您编写的任何正则表达式都可能被其他奇怪的注释嵌套所破坏。

要解析任意注释,您需要转到解析context free grammars的方法。一种简单的方法是使用pushdown automaton

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12736074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档