Это означает соответствие любым символам, которые не являются печатными символами.
Печатные символы включают от a до z, от A до Z, от 0 до 9 и такие символы, как ",; $ #% и т. Д.
^ not
\x20 hex code for space character
- to
\x7e hex code for ~ (tilde) character
Все печатные символы ascii находятся между этими двумя.
Этот оператор соответствует не ascii-символам, а также контрольным (не печатаемым) ascii-символам, таким как bell, tab, null и другие.
Посмотрите на
man ascii
в системе Unix, чтобы увидеть, каким символам он соответствует.
В Perl вы также можете написать это как
[^ -~]
или
[[:^cntrl:]]
Этот последний немного отличается тем, что он соответствует любому неконтролирующему символу, включая расширенный ascii (например, символы с акцентом) и юникод.
Возможно, вы не захотите ограничивать себя только ascii, поскольку за пределами США часто используются допустимые печатные символы за пределами этого небольшого диапазона, например øüéåç ...