python - 正则表达式找不到所有
问题描述
下面的代码可以直接运行。我想要的是返回一个列表:(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)
解决方案
*
操作员捕获尽可能多的字符。这意味着它会一直捕获到最后一次出现\end{figure}
If you want to capture as many characters as required, use *?
instead: pattern = r"\\begin{figure}([\s\S^f]*?)\\end{figure}"
。
推荐阅读
- python - Python - 字符串中的索引到匹配的单词
- python-3.x - 从 Python 向 RabbitMQ 发送 XML 文件时出现“位置参数”错误
- php - 为什么 Opera 浏览器会将我的网站标记为不安全?
- postgresql - KeyCloak 通过 PSQL db 批量更新
- javascript - 反应:画布drawImage没有更新画布
- python - 在 python 中压缩文件时数据意外结束(使用系统命令)
- python - Python Numpy FFT
- jquery - FadeIn 函数抛出未捕获的引用错误。我必须声明 var 吗?
- javascript - 在 else 块中返回是否比在 if 块后返回更安全?
- struct - GNU Octave/Matlab 矩阵操作