26

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

目前我一直在这样做

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

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

4

2 回答 2

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

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

但是请注意,这\w实际上也包括下划线。如果您还想在下划线上拆分,则应该[^a-zA-Z0-9']改用。

于 2012-07-04T16:35:47.140 回答
19

对于基本英文字符,使用

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

如果要包含带有特殊字符的英文单词(例如fiance)或使用非英文字符的语言,请使用

words = Str.split("[^\\p{L}0-9']+");
于 2012-07-04T16:36:24.743 回答