我似乎找不到一种方法来提取以下示例中的所有注释.

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

块与two -- --不匹配很可能是因为坏的正则表达式.有人能告诉我如何提取两个字符串之间的匹配项吗.


嗨,我已经测试了你们在 comments 中的建议....这是一个工作解决方案,几乎没有升级.

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

谢谢

推荐答案

这应该能奏效

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

Python-3.x相关问答推荐

math. gcd背后的算法是什么,为什么它是更快的欧几里得算法?

如何在python中有效地使用多处理和pytube库来加快下载速度?

替换Pandas中组下的列值

如何检索与美汤相似的标签中的文本?

为什么我在BLE中的广告代码在发送包裹之间需要大约1秒

如何使用正则表达式通过反向搜索从链接中获取特定文本

从 LeetCode 的 Python 解决方案类中理解关键字 self

如何转置和 Pandas DataFrame 并命名新列?

如何将列表和字典逐行组合在一起

为什么 Sympy 不能解决我的非线性系统? Python 解释器一直在执行,直到我终止进程

这种类型提示有什么作用?

机器学习实验笔记本的工作区 url

Pandas 将列格式化为货币

在气流中运行 DAG 时出现处理信号:ttou消息

将字节数组转换为类似字节的对象?

__new__ 方法给出错误 object.__new__() 只接受一个参数(要实例化的类型)

如何编写可 Select 充当常规函数的 asyncio 协程?

如何正确创建自定义文本编解码器?

带有 Emacs 的 Python 3

有没有办法在多个线程中使用 asyncio.Queue ?