首页 > 解决方案 > 正则表达式找不到所有

问题描述

下面的代码可以直接运行。我想要的是返回一个列表:(l = [1,2]字符串)。但是,我得到的是第一个“开始”和最后一个“结束”之间的字符串。尽管这是预期的结果之一。我不知道发生了什么。

import re

text = r'''

\begin{figure}
1
\end{figure}

aaa

\begin{figure}
2
\end{figure}

'''

pattern = r"\\begin{figure}([\s\S^f]*)\\end{figure}"
r = re.findall(pattern, text)


print(r)

标签: pythonre

解决方案


*操作员捕获尽可能多的字符。这意味着它会一直捕获到最后一次出现\end{figure}If you want to capture as many characters as required, use *?instead: pattern = r"\\begin{figure}([\s\S^f]*?)\\end{figure}"


推荐阅读