正则表达式 - 删除模式前面的 space

regular expression - remove space in front of pattern

我有文字

Bla ~ \cite{} and Bla1 ~ \ref{} and Equation in ~ \eqref{}.

我想删除 ~\ 之间的 space。 因此上面一行应该是这样的:

Bla ~\cite{} and Bla1 ~\ref{} and Equation in ~\eqref{}.

我尝试关注 reg。表达式 %s:\(\|~\):(~\):gce

但它用 ~ 替换了空 space。 有什么修复建议吗?

我刚刚在 vim 中进行了验证,您只需确保在模式和替换中禁用 ~ 的特殊含义:

:%s/\~ \/\~\/g

将在没有 space 的情况下将 ~ \ 替换为 ~\

您可以使用

:%s/\v(\~)\s+(\)//g

这里,

  • \v开启魔法模式
  • (\~) - 第 1 组:~ 字符
  • \s+ - 一个或多个空格
  • (\) - 第 2 组:一个 \ 字符
  • </code> - 替换为组 1 + 组 2 值</li> <li><code>g - 多次出现。

使用vim开始匹配\zs

:%s/\~\zs //g

这意味着 vim 将考虑 ~ 之后的所有内容,因为它会进行替换,在我们的例子中是 space。当我们使用 g 标志时,vim 将更改行中的所有匹配项。

使用vim开始匹配\zs

:%s/\~\zs //g

这意味着 vim 将考虑 ~ 之后的所有内容,因为它会进行替换,在我们的例子中是 space.