java字符串拆分所有非字母数字除撇号

所以我想在任何非字母数字字符上拆分java中的字符串。

目前我一直这样做

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

但是我想在那里保留撇号(“’”)。 是否有任何正则表达式来保留撇号但踢掉其余的垃圾? 谢谢。

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

只需将其添加到角色类。 \W相当于[^\w] ,然后你可以添加'

但请注意, \w实际上还包括下划线。 如果你想分割下划线,你应该使用[^a-zA-Z0-9']

对于基本英文字符,请使用

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

如果您想要包含带有特殊字符的英语单词(例如未婚夫 )或使用非英语字符的语言,请使用

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