Это означает соответствие любым символам, которые не печатают символы.
Печатные символы включают от a до z, от A до Z, от 0 до 9 и символы, такие как ",; $#% и т.д.
^ not
\x20 hex code for space character
- to
\x7e hex code for ~ (tilde) character
Все символы печати ascii находятся между этими двумя.
Этот оператор соответствует символам не ascii, а также символам управления ascii (непечатающим), таким как звонок, вкладка, нуль и другие.
Посмотрите
man ascii
в системе unix, чтобы увидеть, какие символы он соответствует.
В perl вы также можете записать это как
[^ -~]
или
[[:^cntrl:]]
Этот последний немного отличается, поскольку он соответствует любому неконтролируемому символу, включая расширенные ascii (например, акцентированные символы) и unicode.
Возможно, вы не захотите ограничивать себя просто ascii, поскольку в неамериканских местах часто используются допустимые символы печати за пределами этого небольшого диапазона, например. øüéåç...
Ответ 3
Это означает "все, что не является символьным кодом в шестнадцатеричном диапазоне от 0x20 до 0x7E, то есть от 32 до 126".
Ответ 4
Каретка (^) внутри скобок [] означает "нет", а \x20-\x7E обозначает диапазон символов ascii, где \x20 (пробел) является началом диапазона, а \x7E (~ ) это конец. Это в основном все, что не является буквой, числом или общей пунктуацией.