两个字符串之间的正则表达式匹配?
- 2025-03-21 09:06:00
- admin 原创
- 32
问题描述:
我似乎找不到像以下示例一样提取所有评论的方法。
>>> import re
>>> string = '''
... <!-- one
... -->
... <!-- two -- -- -->
... <!-- three -->
... '''
>>> m = re.findall ( '<!--([^(-->)]+)-->', string, re.MULTILINE)
>>> m
[' one
', ' three ']
块two -- --
不匹配很可能是因为正则表达式不好。有人能告诉我如何提取两个字符串之间的匹配吗?
嗨,我已经测试了你们在评论中建议的内容......这是可行的解决方案,只需稍加升级即可。
>>> m = re.findall ( '<!--(.*?)-->', string, re.MULTILINE)
>>> m
[' two -- -- ', ' three ']
>>> m = re.findall ( '<!--(.*
?)-->', string, re.MULTILINE)
>>> m
[' one
', ' two -- -- ', ' three ']
谢谢!
解决方案 1:
这应该可以解决问题
m = re.findall ( '<!--(.*?)-->', string, re.DOTALL)
解决方案 2:
一般来说,用常规语法不可能在两个定界符之间进行任意匹配。
具体来说,如果允许嵌套,
<!-- how do you deal <!-- with nested --> comments? -->
你会遇到问题。因此,虽然你也许能够用正则表达式解决这个特定问题,但你编写的任何正则表达式都可能被其他一些奇怪的注释嵌套破坏。
要解析任意注释,您需要转到解析上下文无关语法的方法。一种简单的方法是使用下推自动机。
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD