为什么我的正则表达式使用split()在单个标点后留空格?

Dan*_* B. 1 java regex split

这里有关于String.split()和regex的大量问题,但这些问题似乎都与我的困境无关......

我有以下内容:

string a = "@USER_78b1ff36 just a hunch............     You 
two seem to know your baseball, and may have been teammates before....";

splitTweet = tweets[i].split("\\.+|\\s+|\\*+|\\,+|\\!+|\"|\\-|/|\\:");
printArray(splitTweet); //prints line by line the index followed by value
Run Code Online (Sandbox Code Playgroud)

OUTPUT:

0: @USER_78b1ff36
1: just
2: a
3: hunch
4: 
5: You
6: two
7: seem
8: to
9: know
10: your
11: baseball
12: 
13: and
14: may
15: have
16: been
17: teammates
18: before
Run Code Online (Sandbox Code Playgroud)

我得到这些空格,但它们只出现在单个标点符号实例中,空白区域按预期被破坏,多个标点符号实例按预期被破坏...

我的表情我做错了什么?(我确定有很多事情,这是我第一次尝试使用split())我想只有单词,但我确实需要包含@和#if他们附在一个令牌上.

use*_*ica 5

"baseball, and"
Run Code Online (Sandbox Code Playgroud)

分裂成

"baseball"
""
"and"
Run Code Online (Sandbox Code Playgroud)

因为", "是两个分隔符.你的+量词只允许一个单一的一种定界符的运行.如果你想在不同分隔符的运行上拆分,那么就把它放在+整个部分而不是部分:

a.split("(\\.|\\s|\\*|\\,|\\!|\"|\\-|/|\\:)+");
Run Code Online (Sandbox Code Playgroud)