我試圖計算額外空間的數量,包括字符串中的尾隨和前導空格。那裏有很多建議,但是沒有一個能夠完全正確地計數。正則表達式來尋找額外空間的數量,包括尾隨空間和領先空間
實施例(_指示空間)
__this is a string__with extra spaces__
應該匹配5個多餘的空格。
這裏是我的代碼:
if (my @matches = $_[0] =~ m/(\s(?=\s)|(?<=\s)\s)|^\s|\s$/g){
push @errors, {
"error_count" => scalar @matches,
"error_type" => "extra spaces",
};
}
與此正則表達式的問題是,它計算在中間空間的兩倍。 不過,如果我採取了先行的一個/查找匹配的背後,像這樣:
$_[0] =~ m/\s(?=\s)|^\s|\s$/g
它不會在一個字符串的開頭計數兩個額外的空間。 (我的測試字符串將只匹配4個空格。)
側面說明; '$ meaningful'變量總是比'$ _ [0]'和'M'是隱含/不需要''/../ +1 –