仅删除单词之间的空格

时间:2015-08-18 04:26:31

标签: regex perl

我有一个由单词,特殊字符(*,|,(等)和数字(浮动)组成的字符串。我想删除单词和特殊字符之间的空格。不应删除数字之间的空格。我能在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.

2 个答案:

答案 0 :(得分:1)

(?<!\d)\h+|\h+(?!\d)

您可以在此处使用lookarounds。参见演示。

https://regex101.com/r/uF4oY4/62

答案 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.