正则表达式匹配代码中过多的空格

时间:2011-08-04 15:25:20

标签: regex perl whitespace

我想找到并替换$之间只有一个空格的下面显示的所有空格。

注意:我手动添加$以显示我想要匹配的内容。它们实际上并不存在于代码中 - 因为如果它们存在,则无法编译!

CClient::CClient$   $(Callback& callback):
    SecurityInfo$   $(NULL),
    ConnectInfo$    $(NULL),
    Session$    $(NULL),
    Id$         $(NULL),
    MyCallback$ $(callback),
    {
    unsigned long$           $something = 0;

    ConnectionId$            $= NumberOfClients++;

    SecurityInfo$            $= new SecurityInfoClass$  $();
    ConnectInfo$             $= new ConnectInfoClass$   $();

这是我到目前为止所拥有的:

s/(?<!^)(?: ){2,}+|\t+(?=\S)/ /g

它工作正常,但检查行首不能按预期工作。

提前致谢。

1 个答案:

答案 0 :(得分:1)

我猜你想要的东西是:

s/(?<![ \t])(?!^)[ \t]{2,}(?![ \t])/ /mg;

接受这个:

s/(?<![ \t])(?!^)[ \t]+(?![ \t])/ /mg;