21

我想使用搜索和替换正则表达式来转换以下文本:

“一些文本我不关心\cite[p. 6]{some-bibtex-citation}更多文本我更不关心 \cite[p. 321 / 4]{and-another-citation-from-bibxtex} 和更多文本。”

进入这个:

“一些我不关心的[\citem{author}{some-bibtex-citation}, p. 6]文本,一些我更不关心的文本[\citem{author}{and-another-citation-from-bibxtex}, p. 321 / 4],还有更多的文本。”

正如你所看到的,所有的 \cite 出现都被一个不同的替换了。它们现在被 [ 和 ] 包围,并且都以 [citem{author}

我尝试了以下搜索正则表达式,它基本上可以工作,但可以一次选择太多文本:

\\cite\[(.+)\]\{(.+)\}

我用于此的替换正则表达式是:

[\\citem{author}{\2}, \1]
4

1 回答 1

33

更改您的正则表达式,以便.+变得懒惰:

\\cite\[(.+?)\]\{(.+?)\}
           ^        ^

使贪心量词变得懒惰意味着不是尽可能多地匹配,而是尽可能少地匹配。在您当前的正则表达式中,.将匹配所有字符,直到找到另一个字符)(后跟正则表达式中的其他字符)。

或使用否定类:

\\cite\[([^\]]+)\]\{([^}]+)\}
于 2013-09-02T13:14:20.240 回答