Ответы, которые вы получили, похоже, упустили одну из основ RE: «-» в квадратных скобках не означает буквальный «-», если только это не первый или последний символ. Вместо этого '-' определяет диапазон. "!" это (в ASCII, ISO 8859 и т. д.) код символа 33 - первый «видимый» печатный символ. Точно так же в ASCII '~' - это код 126, последний печатный символ.
Следовательно, «[! - ~]» соответствует одному печатному символу (ASCII).
В остальном остальные ответы кажутся разумными.
Редактировать: похоже, когда я писал это, были опубликованы некоторые более точные ответы - мои извинения, если я кого-то обидел, подразумевая иначе. Когда я начал писать это, ответы, которые были опубликованы, были неправильными по этому вопросу.