我試圖縮短所有多個空間到一個空間,除了空間(縮進)的第一次發生。perl字符串替換的負面正則表達式
我發現這個代碼將替換第一個出現次數:
$_ =~ s/^ +/ /;
所以我想,它的否定會做我想做的。但事實並非如此:
$_ =~ s/!^ +/ /g;
我在做什麼錯?
我試圖縮短所有多個空間到一個空間,除了空間(縮進)的第一次發生。perl字符串替換的負面正則表達式
我發現這個代碼將替換第一個出現次數:
$_ =~ s/^ +/ /;
所以我想,它的否定會做我想做的。但事實並非如此:
$_ =~ s/!^ +/ /g;
我在做什麼錯?
你可以改變的方法來正則表達式
s/\S\K +/ /g;
非空格,保留,後面跟一個或多個空格,用空格替換。 (和你保存的位)。我認爲?但一個很好的解決方案 – Sobrique
不錯的主意,是或'(?<= \ S)+' –
是的,\ K從v5.10和更新的版本看起來是積極的。 –