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

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

我正在与旧的“格式化”代码作斗争,其中添加了大量空格来排列 = 等:

  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

在这个例子中,它实际上是有一定意义的,但大多数情况下,代码已被修改为一种状态,使空白更加“令人困惑”,而不是“有帮助”。 我想做的是将所有双(或更多)空格替换为一个空格,但我当然想保留缩进。因此,我正在寻找一个正则表达式来识别不在行开头的双(或更多)空格。我尝试过 消极后视,但似乎无法使其发挥作用:

(?<![\n])[\s]{2,} 有什么提示吗?哦,我正在使用 Ultraedit(Perl 正则表达式引擎),因此正则表达式应该是“UE 兼容的”。

编辑

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

将“

([^ \n]) +
regex code-formatting removing-whitespace negative-lookbehind
3个回答
4
投票
$1

”。不需要时髦的回顾。


(强调一下,标记没有显示清楚,但加号前有两个空格,以避免不必要地用单个空格替换单个空格。)
    

它不是 PCRE,但如果您有权访问 Linux shell,这将满足您的需要:


2
投票

它只会替换非空格字符后面的任何空格,同时保留该字符。如果您习惯 Perl 正则表达式,应该很容易理解它。


尝试更换...


1
投票

与...

$1

© www.soinside.com 2019 - 2024. All rights reserved.