正则表达式查找不在行首的双空格

jon*_*erg 2 regex code-formatting negative-lookbehind removing-whitespace

我正在努力处理旧的“格式化”代码,其中添加了大量空格来排列 = 等:

  if (!This.RevData.Last().Size() eq 0) then
    !DocRev   = '?'
    !Status   = '?'
    !RevCode  = '?'
  else
    !Pad      = !This.RevData.Last()[1]
    !DocRev   = !Pad[2]
    !Status   = !This.GenUtil.If((!Pad[3] eq 'UA'), '' , !Pad[3])
    !RevCode  = !This.GenUtil.If((!Pad[6] eq ''  ), '?', !Pad[6])
  endif
Run Code Online (Sandbox Code Playgroud)

在这个例子中,它实际上是有一定意义的,但大多数情况下,代码已被修改为一种状态,使空白更加混乱而不是有用

我想做的是将所有双(或更多)空格替换为单个空格,但我当然希望保留缩进。因此,我正在寻找一个正则表达式来识别不在行开头的双(或更多)空格。我尝试过否定lookbehind,但似乎无法使其工作:

(?<![\n])[\s]{2,}
Run Code Online (Sandbox Code Playgroud)

有什么提示吗?哦,我正在使用 Ultraedit(Perl 正则表达式引擎),因此正则表达式应该是“UE 兼容的”。

编辑:UE不会逐行评估正则表达式的行;换行符只是文档长字符串中的一个字符,这使问题变得有点复杂。

tri*_*eee 5

([^ \n] ) +。。。来代替 ” $1”。不需要时髦的回顾。