python - 如何使用 Python 和正则表达式从引文中提取页码?

标签 python regex bibliography citations

我正在尝试使用正则表达式从引文中提取页码。

这是我正在使用的测试数据:

  • 期刊名称,卷。 20,第 2 号; p. 15
  • 期刊名称,卷。 20、第2期:人名(1990-2010); p. 15
  • 期刊名称,卷。 20、第2期:人名(1990-2010);第 15-20
  • 期刊名称,卷。 20、第2期:人名(1990-2010);第 15 页-
  • 期刊名称,卷。 20,第 2 号; 20-25
  • 期刊名称,卷。 20,第 2 号; ISSN:1234-1234(打印); 20-25
  • 期刊名称,卷。 20,第 2 号; 20-25; ISSN:1234-1234(打印)
  • 期刊名称,卷。 20,第 2 号; ISSN:1234-1234(打印); ISSN:1234-1234(在线); 20-25
  • 期刊名称,卷。 20,第 2 号; ISSN 1234-1234(打印); ISSN 1234-1234(在线); 20-25

当使用以下正则表达式时:

(?![^()]*\))(\d+-\d+)

上面粗体的值是匹配的。

我想改进正则表达式以不匹配任何 \d+-\d+在“ISSN”或“ISSN:”之后。我尝试使用 (?<![ISSN:?\s]) 添加后视但没有成功。

关于如何实现这一目标并仅匹配以下值有什么想法吗?

  • 期刊名称,卷。 20,第 2 号; p. 15
  • 期刊名称,卷。 20、第2期:人名(1990-2010); p. 15
  • 期刊名称,卷。 20、第2期:人名(1990-2010);第 15-20
  • 期刊名称,卷。 20、第2期:人名(1990-2010);第 15 页-
  • 期刊名称,卷。 20,第 2 号; 20-25
  • 期刊名称,卷。 20,第 2 号; ISSN:1234-1234(打印); 20-25
  • 期刊名称,卷。 20,第 2 号; 20-25; ISSN:1234-1234(打印)
  • 期刊名称,卷。 20,第 2 号; ISSN:1234-1234(打印); ISSN:1234-1234(在线); 20-25
  • 期刊名称,卷。 20,第 2 号; ISSN 1234-1234(打印); ISSN 1234-1234(在线); 20-25

最佳答案

这解决了我的问题:

re.search(r'[^ISN:?](?![^()]*\))\s(\d+-\d+)', s).group(1)

感谢大家的帮助。仍然欢迎更好的解决方案。

关于python - 如何使用 Python 和正则表达式从引文中提取页码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29922816/

相关文章:

python - 在 python 中如何使用 XOR 进行二进制运算?

python - 使用循环创建 Pandas Dataframe

python - 字符串比较无法识别匹配

用于验证统一类型标识符的正则表达式

Java String Split 从大字符串中获取单个数据

r - 引用 rmd 文件中的引用和 pandoc-citeproc.exe 中的错误

r-markdown - 是否可以使用引用键在 Rmarkdown 文档中间插入文章的完整引用?

python - 我如何在 numpy 中做这个数组索引

python - 仅使用 python 正则表达式从最新的字符串中获取

latex - 如何按出现顺序对 LaTeX 中的引用文献进行排序,同时仍显示 URL?