Вы сказали, что функция String#split
разделяет на пробел или точку или запятую или точку с запятой.Вот что это сделано:
"a. R; er, we p."
^^ ^^ ^^^ ^ ^
|| || ||| | |
|| || ||| | +--Split here
|| || ||| +----And here
|| || ||+-------And here
|| || |+--------And here
|| || +---------And here
|| |+------------And here
|| +-------------And here
|+---------------And here
+----------------And here
... потому что вы использовали чередование без квантификатора.Вы хотите сказать, разделить на любой из них:
return s.split("[ .,;]+");
, который использует класс символов ([...]
) и квантификатор (+
), так что более одногоподряд рассматривается как одно совпадение.Вы также можете сделать это с помощью квантификатора чередования + (вы должны обернуть чередование в группу без захвата: "(?: |\\.|,|\\;)+"
), но использование класса символов будет чище.