如何在notepad ++中进行非贪婪的正则表达式查询?

时间:2013-08-24 06:53:13

标签: regex notepad++

我正在写一篇带乳胶的论文,不小心写了\cite[]而不是\cite{}。 我可以手工浏览整个文档,但我想知道如何使用正则表达式在notepad ++中执行此操作。

我最初尝试\\cite\[(.*)\]并替换\cite{\1},这适用于简单案例,例如

\cite[hello world] blah blah 

但是,如果段落中有两个或更多引文,则它们匹配所有引用。 例如,

\cite[aaa]\cite[bbb] something here \cite[ccc]

匹配整行

如何获得非贪婪的匹配,以便将上述行匹配为3个单独的匹配 并且替换命令的结果应该给我

\cite{aaa}\cite{bbb} something here \cite{ccc}

2 个答案:

答案 0 :(得分:22)

使用不情愿的(又名非贪婪)表达式:

\\cite\[(.*?)\] 

添加问号会将.*从贪婪(默认)更改为不情愿(非贪婪),这意味着它会尽可能少地消耗以找到匹配,这意味着它不会跳过多个搜索词,如果第一个引用和最后一个引用的结束方括号,则使用空方括号进行匹配。

使用问题中的示例查看此正则表达式的live demo

答案 1 :(得分:1)

最好首先使用更精确的表达式:

\\cite\[([^[\]]*)\]

您必须使用Notepad ++ 6或更高版本(它们在V6升级到PCRE正则表达式引擎)。