Sublime Text - 用于搜索和替换的正则表达式

use*_*938 19 regex sublimetext2

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

"有些文字我不关心\cite[p. 6]{some-bibtex-citation}更多的文字我更关心\ cite [p.321/4] {和 - 另外 - 引用 - 来自bibxtex}以及更多的文字."

进入这个:

"有些文字我不在乎[\citem{author}{some-bibtex-citation}, p. 6]更多关于[\citem{author}{and-another-citation-from-bibxtex}, p. 321 / 4]文字的文字."

正如您所看到的,所有\ cite事件都被替换为另一个.它们现在被[和]包围,它们都以[citem {author}

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

\\cite\[(.+)\]\{(.+)\}
Run Code Online (Sandbox Code Playgroud)

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

[\\citem{author}{\2}, \1]
Run Code Online (Sandbox Code Playgroud)

Jer*_*rry 30

改变你的正则表达式,使.+变得懒惰:

\\cite\[(.+?)\]\{(.+?)\}
           ^        ^
Run Code Online (Sandbox Code Playgroud)

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

或者使用否定的类:

\\cite\[([^\]]+)\]\{([^}]+)\}
Run Code Online (Sandbox Code Playgroud)

  • 有些人可能称这种"懒惰"的评价不贪婪 (3认同)