Erro no regex para capturar caracteres especiais

Eu escrevi uma expressão regular para capturar caracteres especiais em uma string de input, mas também pega os números. Aqui está o regex,

final String REGEX="[^.,%*$#@?^'|/\\\\~\\[\\]{}+-=\"]*"; 

Eu preciso pegar apenas os caracteres acima mencionados. Por favor me ajude.

Você criou um intervalo com o hífen sem escape.

O hífen mal colocado faz com que o padrão corresponda a esses caracteres:

insira a descrição da imagem aqui

Escape o hífen ou coloque no final da aula:

 final String REGEX="[^.,%*$#@?^'|/\\\\~\\[\\]{}+=\"-]*"; ^ 

Aqui está esta demo regex

Mova o hífen ( - ) para o final da sua class de personagem:

 final String REGEX="[^.,%*$#@?^'|/\\\\~\\[\\]{}+=\"-]*" 

Onde está atualmente posicionado ( +-= ), expressa um intervalo de + a = . Este intervalo inclui, ao todos os dígitos.