Это не подходящее место для использования регулярных выражений.
Правильный способ сделать это в Java - использовать BreakIterator
для обнаружения «слов» и обработки их в соответствии с вашей логикой. Простое разбиение на символы может быть семантически правильным и не на всех языках.
Печать первого элемента:
public static void printFirst(BreakIterator boundary, String source) {
int start = boundary.first();
int end = boundary.next();
System.out.println(source.substring(start,end));
}
Печать последнего элемента:
public static void printLast(BreakIterator boundary, String source) {
int end = boundary.last();
int start = boundary.previous();
System.out.println(source.substring(start,end));
}
Распечатать элемент в указанной позиции:
public static void printAt(BreakIterator boundary, int pos, String source) {
int end = boundary.following(pos);
int start = boundary.previous();
System.out.println(source.substring(start,end));
}