我有一個由單詞,特殊字符(*,|,(等)和數字(浮動)組成的字符串,我想刪除單詞和特殊字符之間的空格。 。之間的數字不應該被刪除我怎麼能做到這一點在Perl刪除單詞之間的空格而不是數字之間的空格
如:
Rama 1 * 2.34 * (L - 0.45) XYZ 10 20.05 30.06 40 P > 25.
它應該是轉換後:
Rama1*2.34*(L-0.45)XYZ 10 20.05 30.06 40 P>25.
我有一個由單詞,特殊字符(*,|,(等)和數字(浮動)組成的字符串,我想刪除單詞和特殊字符之間的空格。 。之間的數字不應該被刪除我怎麼能做到這一點在Perl刪除單詞之間的空格而不是數字之間的空格
如:
Rama 1 * 2.34 * (L - 0.45) XYZ 10 20.05 30.06 40 P > 25.
它應該是轉換後:
Rama1*2.34*(L-0.45)XYZ 10 20.05 30.06 40 P>25.
您可以使用下面的基於lookaround的正則表達式。
perl -pe 's/\s+(?=\D)|(?<=\D)\s+//g' file
例子:
$ echo 'Rama 1 * 2.34 * (L - 0.45) XYZ 10 20.05 30.06 40 P > 25.' | perl -pe 's/\s+(?=\D)|(?<=\D)\s+//g'
Rama1*2.34*(L-0.45)XYZ10 20.05 30.06 40P>25.
或
$ echo 'Rama 1 * 2.34 * (L - 0.45) XYZ 10 20.05 30.06 40 P > 25.' | perl -pe 's/(?<=[^\s\w])\s+|\s+(?=[^\w\s])//g'
Rama 1*2.34*(L-0.45)XYZ 10 20.05 30.06 40 P>25.
提示:'\ D'在正則表達式匹配的數字,'\ D'匹配非數字 – mob
那麼,爲什麼有這'XYZ 10'沒有'Rama1'空間和? –