Вы используете обходной путь, который является непотребляющим шаблоном, т. Е. Значение соответствия всегда будет пустым, поскольку будет сопоставляться только место внутри строки.Используйте
String b = a.replaceAll("\\P{Alnum}+", "");
Шаблон \\P{Alnum}+
соответствует одному или нескольким символам, отличным от буквенно-цифровых символов ASCII.Также см. Предопределенные классы символов .
В качестве альтернативы, вы можете использовать
String b = a.replaceAll("[^\\p{L}\\p{P}\\p{S}]+", "");
Это удалит куски из 1 или более символов, кроме букв Юникода, знаков пунктуации и символов..