我似乎找不到一种方法来提取所有注释,就像以下示例中的那样。
>>> 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 ']
谢谢!
re.findall('<!--(.*?)-->', string, re.DOTALL)
就可以了。这里不需要^\(-->)
,因为问号使其非贪婪匹配。 - BrtHm = re.findall('[\w]+', string, re.MULTILINE)
有什么问题吗?另外,string 是一个非常糟糕的名称,用于表示字符串。 - Ben