You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从含参考文献的HTML文本中提取DOI标识符?

从HTML参考文献中提取DOI的解决方案

问题背景

我有大量HTML格式的参考文献文本,需要提取其中两种形式的DOI:

  • 带doi:前缀的格式(如doi:10.1097/BRS.0b013e31829ff095)
  • https://dx.doi.org/开头的链接格式(如https://dx.doi.org/10.1016/j.arth.2005.04.023)

之前尝试的正则表达式返回空列表,无法提取目标内容:

import re
exp = "10.\\d{4,9}/[-._;()/:a-z0-9A-Z]+"
pattern = re.compile(exp)

pattern.findall(txt)

问题原因

之前的正则仅匹配DOI的核心标识部分(10.xxxx/...),但未包含实际文本中存在的前缀(doi:或https://dx.doi.org/),因此无法匹配到完整的DOI内容。

可行解决方案

使用同时兼容两种DOI格式的正则表达式,完整匹配带前缀的DOI内容:

import re

# 匹配两种DOI格式:带doi:前缀的,以及dx.doi.org链接形式的
doi_pattern = re.compile(r'(doi:10\.\d{4,9}/[-._;()/:a-zA-Z0-9]+|https://dx\.doi\.org/10\.\d{4,9}/[-._;()/:a-zA-Z0-9]+)')

# 从文本中提取所有匹配的DOI
extracted_dois = doi_pattern.findall(txt)

# 输出结果
print(extracted_dois)

输出结果

运行上述代码后,将得到符合需求的DOI列表:

['doi:10.1097/BRS.0b013e31829ff095',
 'https://dx.doi.org/10.1016/j.arth.2005.04.023',
 'https://dx.doi.org/10.1186/s13018-017-0552-9']

内容的提问来源于stack exchange,提问作者Vai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 18:31:43