我正在与旧的“格式化”代码作斗争,其中添加了大量空格来排列 = 等:
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]) +
$1
”。不需要时髦的回顾。
(强调一下,标记没有显示清楚,但加号前有两个空格,以避免不必要地用单个空格替换单个空格。)
它不是 PCRE,但如果您有权访问 Linux shell,这将满足您的需要:
它只会替换非空格字符后面的任何空格,同时保留该字符。如果您习惯 Perl 正则表达式,应该很容易理解它。
尝试更换...
与...
$1