我正在写一篇带乳胶的论文,不小心写了\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}
答案 0 :(得分:22)
使用不情愿的(又名非贪婪)表达式:
\\cite\[(.*?)\]
添加问号会将.*
从贪婪(默认)更改为不情愿(非贪婪),这意味着它会尽可能少地消耗以找到匹配,这意味着它不会跳过多个搜索词,如果第一个引用和最后一个引用的结束方括号,则使用空方括号进行匹配。
使用问题中的示例查看此正则表达式的live demo。
答案 1 :(得分:1)
最好首先使用更精确的表达式:
\\cite\[([^[\]]*)\]
您必须使用Notepad ++ 6或更高版本(它们在V6升级到PCRE正则表达式引擎)。