我有一组LaTeX文件。我想为每个人提取"抽象"部分:
begin{abstract}
.....
end{abstract}
我已经尝试了这里的建议:如何解析LaTex文件
And tried:
A = re.findall(r'\begin{abstract}(.*?)\end{abstract}', data)
其中的数据包含来自LaTeX文件的文本。但是A
只是一个空列表。任何帮助将非常感激!
.*
不匹配换行符,除非给出re.S标志:
re.findall(r'\begin{abstract}(.*?)\end{abstract}', data, re.S)
例子考虑这个测试文件:
documentclass{report}
usepackage[margin=1in]{geometry}
usepackage{longtable}
begin{document}
Title maybe
begin{abstract}
Good stuff
end{abstract}
Other stuff
end{document}
得到摘要:
>>> import re
>>> data = open('a.tex').read()
>>> re.findall(r'\begin{abstract}(.*?)\end{abstract}', data, re.S)
['nGood stuffn']
文档来自re
模块的网页:
再保险。S
re.DOTALL使'。'特殊字符匹配任何字符所有,包括换行符;没有这面旗帜。可以匹配任何东西除了换行符。
.
不匹配换行符。但是,您可以传递一个标志来要求它包含换行符。
的例子:
import re
s = r"""begin{abstract}
this is a test of the
linebreak capture.
end{abstract}"""
pattern = r'\begin{abstract}(.*?)\end{abstract}'
re.findall(pattern, s, re.DOTALL)
#output:
['nthis is a test of thenlinebreak capture.n']