Java Scanner Dilimiter

Dei*_*kus 5 java regex parsing tokenize delimiter

我正在使用Scanner和Delimiter来标记我的.txt文件(这是我必须做的功课).该文件的第一个版本如下所示:

5,5,5,6,5,8,9,5,6,8, good, very good, excellent, good
7,7,8,7,6,7,8,8,9,7,very good, Good, excellent, very good
8,7,6,7,8,7,5,6,8,7 ,GOOD, VERY GOOD, GOOD, AVERAGE
9,9,9,8,9,7,9,8,9,9 ,Excellent, very good, very good, excellent
7,8,8,7,8,7,8,9,6,8 ,very good, good, excellent, excellent
6,5,6,4,5,6,5,6,6,6 ,good, average, good, good
7,8,7,7,6,8,7,8,6,6 ,good, very good, good,  very good
5,7,6,7,6,7,6,7,7,7  ,excellent, very good, very good, very good
Run Code Online (Sandbox Code Playgroud)

我已经使用useDelimiter("[ ]*(,)[ ]*")了该文件的第二个版本,如下所示:

5 5 5 6 5 8 9 5 6 8 good, very good, excellent, good
7 7 8 7 6 7 8 8 9 7 very good, Good, excellent, very good
8 7 6 7 8 7  5 6 8 7 GOOD, VERY GOOD, GOOD, AVERAGE
9 9 9 8 9 7 9  8 9 9 Excellent, very good, very good, excellent
7 8 8 7 8 7 8 9 6 8 very good, good, excellent, excellent
6 5 6 4 5 6 5 6 6 6 good, average, good, good
7  8 7 7 6 8 7 8 6 6 good, very good, good,  very good
5 7 6 7 6 7 6 7 7 7  excellent, very good, very good, very good
Run Code Online (Sandbox Code Playgroud)

我无法想出一个正则表达式,它可以帮助我用空格和单词用逗号分隔数字.基本上我需要一个包含14个值的数组(非常好的是单个变量)

请注意,有多个空格(这是为了让我们更难以实现).

所以任何形式的帮助将不胜感激.

PS我们只允许使用分隔符(没有分割等...)

ach*_*ach 4

这应该可行,关键是正向查找((<?=))和交替(|):

String input = "9 9 9 8 9 7 9  8 9 9 Excellent, very good, very good, excellent";
Scanner s = new Scanner(input).useDelimiter("(?<=\\d)[\\s,]+|\\s*,\\s*");
while (s.hasNext()) {
    System.out.println("Token: ." + s.next() + ".");
}
Run Code Online (Sandbox Code Playgroud)

印刷:

Token: .9.
Token: .9.
Token: .9.
Token: .8.
Token: .9.
Token: .7.
Token: .9.
Token: .8.
Token: .9.
Token: .9.
Token: .Excellent.
Token: .very good.
Token: .very good.
Token: .excellent.
Run Code Online (Sandbox Code Playgroud)