如何用Python正则提取"References"后的所有参考文献条目?
解决方法
你可以用以下两种方式提取「References」下的所有参考文献条目,同时排除其他区域的类似内容:
方法一:单步 re.findall(需 Python 3.7+ 支持变长向后断言)
直接用正则匹配「References」标题后的所有编号条目:
import re text = """你的目标文本内容""" pattern = r'(?<=^References(?:\n(?:\s*|\d+\. .+))*\n)\d+\. .+' entries = re.findall(pattern, text, re.MULTILINE)
逻辑说明:
- 向后断言确保当前条目位于「References」之后,且中间只存在空白行或其他参考文献条目
- 精准匹配以「数字+点」开头的完整条目行
方法二:两步提取(兼容性更强)
先定位「References」对应的整个区块,再从中提取每条条目,适配各种格式变化(比如条目间的空白行):
import re text = """你的目标文本内容""" # 匹配References对应的完整区块 block_match = re.search(r'^References\n(.*?)(?=\n^[A-Z][a-z ]+|\Z)', text, re.DOTALL | re.MULTILINE) if block_match: # 从区块中提取所有编号条目 entries = re.findall(r'^\d+\. .+$', block_match.group(1), re.MULTILINE)
两种方法最终都会得到你需要的参考文献列表,自动排除「Other References」及文本末尾的无关内容。
内容的提问来源于stack exchange,提问作者Rostyslav Chayka
相关产品推荐
相关产品推荐

