Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式-删除模式前面的空格_Regex_Vim - Fatal编程技术网

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
    -多次出现

使用vim启动匹配
\zs

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

<>这意味着VIM将在代码> > /代码>之后考虑所有事物,因为它是替代的,在我们的例子中是空间。当我们使用
g
标志时,vim将更改行中的所有出现情况。

使用vim开始匹配
\zs

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

<>这意味着VIM将在代码> > /代码>之后考虑一切,因为它是替代的,在我们的情况下,

你使用什么工具?Vim?这不需要正则表达式。只需将字符串
~\
替换为
~\
,除非有多个空格。是的,我正在使用vim为什么要在静态已知的组中捕获某些内容?替换可以是
\~\
(因为您只捕获
~
\
)@knittl,以展示如何在将来扩展它抱歉,我想改进我的答案,并最终编辑了您的答案。正如你所看到的,我的方法有点不同。