Regex 正则表达式-删除模式前面的空格
我有文本作为Regex 正则表达式-删除模式前面的空格,regex,vim,Regex,Vim,我有文本作为 Bla ~ \cite{} and Bla1 ~ \ref{} and Equation in ~ \eqref{}. 我想删除~和\之间的空格。 因此,在上面的行中,应该如下所示: Bla ~\cite{} and Bla1 ~\ref{} and Equation in ~\eqref{}. 我试着跟着雷格。表达式%s:\(\\\;~\):(~\):gce 但是它用~替换了空白。 有任何修复建议吗?我刚刚在vim中验证过,您只需确保在模式和替换中禁用~的特殊含义: :%s/
Bla ~ \cite{} and Bla1 ~ \ref{} and Equation in ~ \eqref{}.
我想删除~
和\
之间的空格。
因此,在上面的行中,应该如下所示:
Bla ~\cite{} and Bla1 ~\ref{} and Equation in ~\eqref{}.
我试着跟着雷格。表达式%s:\(\\\;~\):(~\):gce
但是它用~
替换了空白。
有任何修复建议吗?我刚刚在vim中验证过,您只需确保在模式和替换中禁用
~
的特殊含义:
:%s/\~ \\/\~\\/g
将用无空格的~\
替换~\
所有位置。您可以使用
:%s/\v(\~)\s+(\\)/\1\2/g
这里,
启用非常神奇的模式\v
-第1组:(\~)
字符~
-一个或多个空格\s+
-第2组:a(\\)
字符\
-替换为第1组+第2组值\1\2
-多次出现g
\zs
:%s/\~\zs //g
:%s/\~\zs //g
<>这意味着VIM将在代码> > /代码>之后考虑所有事物,因为它是替代的,在我们的例子中是空间。当我们使用
g
标志时,vim将更改行中的所有出现情况。使用vim开始匹配\zs
:%s/\~\zs //g
:%s/\~\zs //g
<>这意味着VIM将在代码> > /代码>之后考虑一切,因为它是替代的,在我们的情况下,你使用什么工具?Vim?这不需要正则表达式。只需将字符串
~\
替换为~\
,除非有多个空格。是的,我正在使用vim为什么要在静态已知的组中捕获某些内容?替换可以是\~\
(因为您只捕获~
和\
)@knittl,以展示如何在将来扩展它抱歉,我想改进我的答案,并最终编辑了您的答案。正如你所看到的,我的方法有点不同。