将PDF中的DOI与PyPDF2匹配的Regex

2024-05-16 04:29:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图编写一个Python脚本,使用PyPDF2和下面的regex从pdf中提取doi,我找到了here。在

\b(10[.][0-9]{4,}(?:[.][0-9]+)*/(?:(?!["&\'])\S)+)\b

{I在下面的测试中使用^ doi可以很好地解决以下问题:

^{pr2}$
File "/Users/fort/Documents/Dropbox/Code/Python/pdf2doi/pdf2doi.py", line 9
doi_re = re.compile("\b(10[.][0-9]{4,}(?:[.][0-9]+)*/(?:(?!["&\'])\S)+)\b")
                                                                          ^
SyntaxError: unexpected character after line continuation character

我的编辑器的语法高亮显示语法分析器不喜欢'])\S)+)\b"),所以我尝试转义它前面的双引号,这样就解决了这个特殊问题,即

\b(10[.][0-9]{4,}(?:[.][0-9]+)*/(?:(?![\"&\'])\S)+)\b

然而,regex不再匹配doi。(将正则表达式括在单引号中也可以修复此语法错误,但结果相同。)

最后,如果我改用以下regex,脚本确实匹配一些doi,但它遗漏了不少:

10.(\d)+/([^(\s\>\"\<)])+

任何关于如何使这项工作的想法将不胜感激。在


Tags: re脚本herepdflinedoiusersdocuments
2条回答

你有一个更早的“你应该逃跑。在

["&\']

如果这不起作用,请修复只指向常规页的regex101引用。在

填充regex和一些示例可以帮助我们进一步解决问题。在

不能在"引用的字符串中使用",除非使用\"来传输它。在

或者可以使用三个双引号:"""\b(10[.][0-9]{4,}(?:[.][0-9]+)*/(?:(?!["&\'])\S)+)\b"""

相关问题 更多 >