我试图将所有多个空格缩短到一个空格,除了第一次出现空格(缩进)。
我发现此代码将取代第一次出现:
$_ =~ s/^ +/ /;
所以我想,它的否定会做我想要的。但事实并非如此:
$_ =~ s/!^ +/ /g;
我做错了什么?
答案 0 :(得分:2)
您可以更改正则表达式的方法
s/\S\K +/ /g;
答案 1 :(得分:1)
感叹号不是正则表达式中的否定。至少,不是那样的。
你需要的是负面的背后:
s/(?<!^)\s+/ /g;
应该做的伎俩。