java字符串拆分在除撇号之外的所有非字母数字上

Bad*_*ral 19 java regex

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

目前我一直这样做

words= Str.split("\\W+");
Run Code Online (Sandbox Code Playgroud)

但是我想在那里留下撇号("'").是否有任何正则表达式来保留撇号但是踢掉剩下的垃圾?谢谢.

Amb*_*ber 30

words = Str.split("[^\\w']+");
Run Code Online (Sandbox Code Playgroud)

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

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

  • `a-zA-Z`仅适用于英语字符.更通用的方法是`\ p {L}`.顺便说一句,为了减少混乱,你应该真的逃避反斜杠. (6认同)

Ωme*_*ega 14

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

words = Str.split("[^a-zA-Z0-9']+");
Run Code Online (Sandbox Code Playgroud)

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

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