16
所以我想在任何非字母數字字符的java中分割字符串。所有非字母數字字符串除外的java字符串
目前,我已經做了這樣的
words= Str.split("\\W+");
不過,我想保留單引號(「'」)在那裏。有沒有任何正則表達式來保留撇號,但踢了其餘的垃圾?謝謝。
所以我想在任何非字母數字字符的java中分割字符串。所有非字母數字字符串除外的java字符串
目前,我已經做了這樣的
words= Str.split("\\W+");
不過,我想保留單引號(「'」)在那裏。有沒有任何正則表達式來保留撇號,但踢了其餘的垃圾?謝謝。
words = Str.split("[^\\w']+");
只需將其添加到字符類。 \W
相當於,您可以添加'
。
但請注意,\w
實際上也包含下劃線。如果你想分割下劃線,你應該使用[^a-zA-Z0-9']
。
對於基本的英文字符,請使用
words = Str.split("[^a-zA-Z0-9']+");
如果要包括有特殊字符的英文單詞(如未婚夫),或使用非英語字符的語言,去
words = Str.split("[^\\p{L}0-9']+");
當然,但由於他們已經在使用'\ W',我選擇保留這個。但是,我確實添加了一個關於它的註釋。 – Amber
'a-zA-Z'只適用於英文字符。更普遍的方法是'\ p {L}'。順便說一句,以減少混亂,你應該真的逃避這個反斜槓。 –