我对“堆栈溢出”错误感到困惑——“堆栈空间不足(应用程序错误代码:12246)——当我执行“全部替换”时,我正在进入 BBEdit,搜索
(@article(((?!eprint|@article|@book).)*\r)*)pmid = {(.+)}((((?!eprint|@article|@book).)*\r)*(@|\r*\z))
并替换为
\1eprinttype = {pubmed}, eprint = {\4}\5
我可以手动使用这些相同的模式,一次一个地进行查找和替换,没有任何错误,即使匹配不再发生。我还可以通过处理较小的文件来避免错误。
我怀疑这是我的低效和草率的正则表达式编码的罪魁祸首,并且希望专家帮助更有效地做到这一点。我试图在 BibLaTeX 参考书目中找到所有没有eprint
字段但有pmid
字段的条目,并用相应的电子打印规范替换该pmid
字段(使用eprint
and eprinttype
)。
更新:经过一些实验,我发现一种不同的方法是我唯一可以开始工作的方法。正在寻找
(?(?=@article(.+\r)+eprint = {(.+\r)+}\r*)(?!)|(@article(.+\r)+)pmid = {(.+)}((.+\r)+}\r*))
并替换为
\3eprinttype = {pubmed}, eprint = {\5}\6
成功了。唯一的问题是反向引用很脆弱,但我无法在 BBEdit 中使用命名反向引用。