Вам не нужно регулярное выражение для этого. Кажется, вы хотите изменить символы, которые являются только алфавитами или цифрами. Тогда вы можете сделать это следующим образом - получить начальный и конечный индексы массива символов, где вы найдете символ как букву или ди git, а затем повернуть вспять. Затем верните новую строку с переставленными символами.
private static void reverseWords(char[] c) {
int start = 0, end = c.length;
while ( start < end ) {
int pre = start;
while ( start < c.length && Character.isLetterOrDigit(c[start]) )
start++;
if ( pre < start )
reverseWord(c, pre, start-1);
start++;
}
}
private static void reverseWord(char[] c, int start, int end) {
while ( start < end ) {
char temp = c[start];
c[start] = c[end];
c[end] = temp;
start++;
end--;
}
}
Вы можете проверить этот код здесь