我正在尝试使用正则表达式从引文中提取页码。
这是我正在使用的测试数据:
- 期刊名称,卷。 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/