perl 字符串替换的负正则表达式
negative regex for perl string substitution
我正在尝试将所有多个 space 缩短为一个 space,除了第一次出现的 space(缩进)。
我发现此代码将替换第一次出现的代码:
$_ =~ s/^ +/ /;
所以我想,它的否定会做我想要的。但它没有:
$_ =~ s/!^ +/ /g;
我做错了什么?
感叹号不是正则表达式中的否定。至少,不是那样。
你需要的是负面回顾:
s/(?<!^)\s+/ /g;
应该可以解决问题。
您可以更改正则表达式的方法
s/\S\K +/ /g;
我正在尝试将所有多个 space 缩短为一个 space,除了第一次出现的 space(缩进)。
我发现此代码将替换第一次出现的代码:
$_ =~ s/^ +/ /;
所以我想,它的否定会做我想要的。但它没有:
$_ =~ s/!^ +/ /g;
我做错了什么?
感叹号不是正则表达式中的否定。至少,不是那样。
你需要的是负面回顾:
s/(?<!^)\s+/ /g;
应该可以解决问题。
您可以更改正则表达式的方法
s/\S\K +/ /g;