如何使用正则表达式删除字符串中的多余空格

时间:2011-01-31 00:32:31

标签: regex perl

我想要使用正则表达式解析一系列段落,但不幸的是,段落出现在句子之间有很多空格,有时候是单词。我希望能够删除所有多余的空白区域,但我不确定如何......任何人都有任何想法?我不想删除所有空格,这是我到目前为止唯一发现的空格,而是保持常规的段落格式,就像在每个单词都有空格之后,并且在每个标点符号+单词后面都有空格。我在Perl编码。

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:15)

规范化水平空格:

s/\h+/ /g;

规范化垂直空白:

s/\v+/\n/g;

规范所有空格:

s/[\h\v]+/ /g;

答案 1 :(得分:4)

您可以使用简单的perl正则表达式

s/\s+/ /g;

仅供参考,最好使用unix工具tr

完成此类操作
tr -s ' '

空格挤压到一个空格。

答案 2 :(得分:1)

上述答案都给出了结果,但在这两种情况下,字符串的开头和结尾都有空格。

如果我在字符串“hello world”上使用这些正则表达式,我会得到答案为“hello world”

要将结果显示为“hello world”,以下perl正则表达式将正常工作

$a =~ s/(?<!\w) //g;

使用这里的后视镜,可以移除所有额外的间隔。