2011-01-31 54 views
6

我有一系列我想使用正则表达式进行解析的段落,但不幸的是,该段落在句子之间出现了许多空格,有时还出现了单词。我希望能够删除所有多余的空白区域,但我不确定如何...任何人有任何想法?我不想删除所有空格,这是我目前发现的唯一的东西,但要保留常规的段落格式,就像在每个单词有空格之后,并且在每个标点符号+单词有空格之后。我使用Perl编码。如何使用正则表达式删除字符串中的多余空格

任何帮助,将不胜感激!

回答

14

。规范化水平空白:

s/\h+/ /g; 

。规范化垂直空白:

s/\v+/\n/g; 

。规范化的所有空格:

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

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

s/\s+/ /g; 

仅供参考,这样的事情最好使用UNIX工具tr

tr -s ' ' 

威尔挤压空格一个空格完成。

+2

Perl也有tr ///太:tr/\ n \ r \ f \ t// s – tadmc 2011-01-31 02:39:29

+0

好点,谢谢你的补充。 – ocodo 2011-01-31 02:49:59

1

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

如果我使用这些正则表达式的字符串“世界你好”,我得到的答案“世界你好”

要得到的结果为“世界你好”,下面的Perl的正则表达式将很好地工作

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

使用这里的后视,所有额外的间距都被删除。

相关问题