2012-07-04 112 views
16

所以我想在任何非字母數字字符的java中分割字符串。所有非字母數字字符串除外的java字符串

目前,我已經做了這樣的

words= Str.split("\\W+"); 

不過,我想保留單引號(「'」)在那裏。有沒有任何正則表達式來保留撇號,但踢了其餘的垃圾?謝謝。

回答

25
words = Str.split("[^\\w']+"); 

只需將其添加到字符類。 \W相當於​​,您可以添加'

但請注意,\w實際上也包含下劃線。如果你想分割下劃線,你應該使用[^a-zA-Z0-9']

+0

當然,但由於他們已經在使用'\ W',我選擇保留這個。但是,我確實添加了一個關於它的註釋。 – Amber

+3

'a-zA-Z'只適用於英文字符。更普遍的方法是'\ p {L}'。順便說一句,以減少混亂,你應該真的逃避這個反斜槓。 –

11

對於基本的英文字符,請使用

words = Str.split("[^a-zA-Z0-9']+"); 

如果要包括有特殊字符的英文單詞(如未婚夫),或使用非英語字符的語言,去

words = Str.split("[^\\p{L}0-9']+"); 
相關問題