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

除撇号外的所有非字母数字上的java字符串拆分,java,regex,Java,Regex,所以我想在java中拆分任何非字母数字字符上的字符串 目前我一直在这样做 words= Str.split("\\W+"); 然而,我想保留撇号'在那里。有没有任何正则表达式可以保留撇号,但去掉其余的垃圾?谢谢 words = Str.split("[^\\w']+"); 只需将其添加到角色类\W相当于[^\W],然后可以将其添加到 但是,请注意\w实际上还包括下划线。如果您还想在下划线上拆分,则应使用[^a-zA-Z0-9'] words = Str.split("[^a-zA-Z0-9'

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

目前我一直在这样做

words= Str.split("\\W+");
然而,我想保留撇号'在那里。有没有任何正则表达式可以保留撇号,但去掉其余的垃圾?谢谢

words = Str.split("[^\\w']+");
只需将其添加到角色类\W相当于[^\W],然后可以将其添加到


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

words = Str.split("[^a-zA-Z0-9']+");
如果您想包含带有特殊字符的英语单词,如fiancé或使用非英语字符的语言,请使用

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

当然可以,但由于他们已经在使用\W,我选择保留它。然而,我确实添加了一个注释。a-zA-Z只适用于英语角色。更一般的方法是\p{L}。顺便说一句,为了减少混乱,你应该避开反斜杠。如何在上面的模式中添加新行?这不适用于字符串=a;我的意思是在房间里有一个空间string@maroodb-嗯,对于拆分来说,它是一个字符串,而不是一个字符,尽管它在HTML输出中被转换为单个字符。在这种情况下,必须相应地调整正则表达式模式。有关此类实现的示例,请参见。我希望这能解决你面临的问题。对不起,我没有正确解释我的意思;字符串={此处有空格}somedata@maroodb-您需要调整正则表达式模式。如果您想通过其他字符串进行拆分,比如说1、2、3,那么模式中需要包含这样的字符串:Str.splitone | two | three |[^a-zA-Z0-9']+