{hola}
{
\defn{[34,\cite{Lint:1998:ICT:552386}]}
\[
R\coloneqq n^{-1}\log_2|\code|
\]
is called the rate of $\code$
}
我需要匹配字符串“{
\defn{[34,\cite{Lint:1998:ICT:552386}]} ”和最后一个字符 } 内的所有内容。您能帮帮我吗?
我正在尝试
{\n.*\\defn{\[\d\+,\s*\\cite{.\+}]}\_.\+\n}\}
但这不起作用
答案1
这个问题可能应该继续vi 和 vim 站点...
您的正则表达式有很多问题。
第一个字符后有空格
{
,因此该{\n
部分永远不会匹配。请尝试删除此空格或添加\s*
您可能不想使用
.\+
,因为这将匹配超过必要的次数,可能会导致一些误报。您可能想要.\{-}
,因为这是一个非贪婪限定符,这意味着它将始终匹配尽可能少的行。如果没有这个,你将匹配如下行\defn{[34,\cite{Lint:1998:ICT:552386 \\hello world \\here's a bunch of random crap you don't want to match ]}]} }]}
你肯定不想使用,
\_.\+
因为这将匹配文件末尾的所有内容。从:h \_.
*/\_.* \_. Matches any single character or end-of-line. Careful: "\_.*" matches all text to the end of the buffer!
再次,你需要非贪婪量词,
\_.\{-}
为什么您要尝试匹配
}
末尾的 2 个字符?您的文本显然仅以一个字符结尾。您不需要转义
}
字符。
把所有这些放在一起,尝试使用这个正则表达式:
{.*\n.*\\defn{\[\d\+,\s*\\cite{.\{-}}]}\_.\{-}\n}