为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

回首忆惘然 2019-12-06 10:11:56
我似乎找不到像以下示例中那样提取所有评论的方法。>>> 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? -->

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


要解析任意注释,您需要继续使用解析上下文无关文法的方法。一种简单的方法是使用下推自动机。


查看完整回答
反对 回复 2019-12-06
  • 3 回答
  • 0 关注
  • 604 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信