我有一个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无法完成任务: - )
答案 0 :(得分:3)
对于您提供的示例,这可以完成工作:
Mx query-replace-regexp
RET \({[^=},]+\)^J +
RET \1
RET
我无法弄清楚如何强制SO格式化程序包含它,但\1
后面应该跟一个空格,因为“竞争”和“人工”将是如果省略它,请粘贴到“by”和“on”。
另请注意,^J
表示换行符的引用插入(但是从上面的评论中我假设您已经知道通过发出 Cq Cj 生成的)。
替换文本中的\1
是第一个带括号的组的后向引用。这告诉Emacs在替换字符串中包含与\(
和\)
之间的正则表达式部分匹配的内容(并丢弃/覆盖其他所有内容)。
如果您还不熟悉它,re-builder是一个出色的(内置!)工具,可以逐步构建regexp。