Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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_Perl_Whitespace - Fatal编程技术网

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

Regex 正则表达式匹配代码中过多的空格,regex,perl,whitespace,Regex,Perl,Whitespace,我想查找下面显示的$之间的所有空格,并将其替换为一个空格 注意:我手动添加了$,以向您显示我希望匹配的内容。它们实际上并不存在于代码中,因为如果它们存在,它就不会编译 CClient::CClient$ $(Callback& callback): SecurityInfo$ $(NULL), ConnectInfo$ $(NULL), Session$ $(NULL), Id$ $(NULL), MyCallb

我想查找下面显示的
$
之间的所有空格,并将其替换为一个空格

注意:我手动添加了
$
,以向您显示我希望匹配的内容。它们实际上并不存在于代码中,因为如果它们存在,它就不会编译

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
s/(?)?
它工作正常,但检查行的开头并不像我预期的那样工作


提前谢谢。

我猜您想要的是:

s/(?<![ \t])(?!^)[ \t]{2,}(?![ \t])/ /mg;
s/(?)?
接受这一点:

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

s/(?制表符在我的模型示例中翻译得不好,但我想你明白了。很抱歉,混淆了。那些$只是为了演示。差不多,但在那些情况下,它不匹配单个制表符,我也需要。我想它只会用单个空格替换单个空格。是的,据我所知,这是可行的。