У меня недавно был этот вопрос в интервью, и я нашел это решение, посмотрев здесь.
String input = "First Middle Last";
Pattern p = Pattern.compile("(?<=\\s+|^)\\w");
Matcher m = p.matcher(input);
while (m.find()) {
System.out.println(m.group());
}
Это регулярное выражение не будет собирать несловарные символы в начале строк.Так что, если кто-то вводит «Mike! Sis Strawberry», возвращаемое значение будет M, S. Это не тот случай, когда выбранный ответ возвращает M,!, S
Регулярное выражение работает с помощью поиска для символов из одного слова(\ w), которые имеют один или несколько пробелов (\ s +) или находятся в начале строки (^).
Чтобы изменить то, что ищется, \ w можно изменить на другое регулярное выражениедопустимые записи.
Чтобы изменить то, что предшествует символу поиска, измените (\ s + | ^).В этом примере \ s + используется для поиска одного или нескольких пробелов, а ^ используется для определения, находится ли символ в начале искомой строки.Чтобы добавить дополнительные критерии, добавьте символ канала, за которым следует допустимая запись поиска регулярного выражения.