我正在用 latex 写论文,不小心写了\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}
最佳答案
使用不情愿(又名非贪婪)表达式:
\\cite\[(.*?)]
见 live demo .添加问号会更改
.*
从贪婪(默认)到不情愿,因此它会尽可能少地寻找匹配项,即它不会跳过与一个词的开头匹配的多个搜索词一直到另一个词的结尾。即使用
.*
比赛将是foo \cite[aaa]\cite[bbb] something here \cite[ccc] bar
^----------------------1---------------------^
但与 .*?
比赛将是:foo \cite[aaa]\cite[bbb] something here \cite[ccc] bar
^---1----^^----------------2-----------------^
小注:
]
不需要逃避。
关于regex - 如何在 Notepad++ 中进行非贪婪的正则表达式查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18415871/