从emacs中的bibtex文件中删除换行符

时间:2014-04-19 12:01:57

标签: regex emacs bibtex

我有一个bibtex文件(由jabref制作),我想删除字段中的换行符,例如

@INPROCEEDINGS{Sims1994b,
  author =       {Sims, K.},
  title =        {{Evolving 3D Morphology and Behavior by
                 Competition.}},
  booktitle =    {{Proceedings of the 4th International Conference on
                 Artificial Life}},
  pages =        {28--39},
  year =         1994
}

应该成为

@INPROCEEDINGS{Sims1994b,
  author =       {Sims, K.},
  title =        {{Evolving 3D Morphology and Behavior by Competition.}},
  booktitle =    {{Proceedings of the 4th International Conference on Artificial Life}},
  pages =        {28--39},
  year =         1994
}

不幸的是我的regexp-fu无法完成任务: - )

1 个答案:

答案 0 :(得分:3)

对于您提供的示例,这可以完成工作:

Mx query-replace-regexp RET \({[^=},]+\)^J + RET \1 RET

我无法弄清楚如何强制SO格式化程序包含它,但\1后面应该跟一个空格,因为“竞争”和“人工”将是如果省略它,请粘贴到“by”和“on”。

另请注意,^J表示换行符的引用插入(但是从上面的评论中我假设您已经知道通过发出 Cq Cj 生成的)。


替换文本中的\1是第一个带括号的组的后向引用。这告诉Emacs在替换字符串中包含与\(\)之间的正则表达式部分匹配的内容(并丢弃/覆盖其他所有内容)。


如果您还不熟悉它,re-builder是一个出色的(内置!)工具,可以逐步构建regexp。