仅当不在上下文中时才匹配正则表达式

问题描述 投票:0回答:0

引擎:Vim RegEx

输入:

\begin{thoerm}\label{ABC_for_all}
    If the ABC is a common good, $ABC(places)$ includes everything.
\end{thorem}

We will now prove Threorem \ref{ABC_for_all}.

表情:

(?<!(\\label|\\ref)\{\w*)ABC(?!\w*\})

预期:

我想匹配(并在 neovim 中替换)“ABC”,但前提是它不是名称的一部分(因此不在 \label{...} 或 ef{...} 上下文。

结果:

不起作用。

如果它出现在上下文中,我知道如何替换它:

:s/(\\label\{\w*)ABC(\w\})*/\1alphaber\2/g

但不是它之外发生的事情。

Lookahead 不起作用,因为 ABC 可能出现在标签命令中的某个位置,因此我需要可变宽度。我也无法弄清楚如何将捕获组转变为实际的比赛。这似乎是一个常见的情况,但到目前为止我发现的所有内容都不包括它。

regex regex-lookarounds regex-group neovim
© www.soinside.com 2019 - 2024. All rights reserved.