2011-01-31 109 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; 

使用這裏的後視,所有額外的間距都被刪除。

相關問題