我有一个由单词,特殊字符(*,|,(等)和数字(浮动)组成的字符串。我想删除单词和特殊字符之间的空格。不应删除数字之间的空格。我能在Perl中做到吗?
E.g:
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.
答案 0 :(得分:1)
答案 1 :(得分:0)
您可以使用以下基于外观的正则表达式。
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.