如何用Python正则提取关键词前最近数字及对应文献片段
提取BLAKE对应参考文献的正则解决方案
- 问题根源:原正则
\d+?.*?BLAKE.*?\d{4}会匹配更早的序号,是因为.*?会忽略中间的其他数字序号,导致跨文献匹配。 - 修正后的正则(两种可选):
- 基础修正版(确保序号是独立数字):
r'(?<!\d)\d+.*?BLAKE.*?\d{4}' - 严谨版(强制序号到BLAKE之间无其他数字):
r'\d+(?:(?!\d).)*BLAKE.*?\d{4}'
- 基础修正版(确保序号是独立数字):
- 关键细节解释:
(?<!\d):反向否定预查,避免匹配数字序列的片段(比如把"16"从"10,16"里误拆出来)。(?:(?!\d).)*:非捕获匹配组,遍历任意字符但禁止出现数字,确保序号是BLAKE之前最近的那个,不会跨文献抓取更早的序号。.*?:非贪婪匹配,避免过度延伸到其他文献内容。
内容的提问来源于stack exchange,提问作者Les D
相关产品推荐
相关产品推荐

