I looked at the following 2 specifications and got the following information: [2.2](https://www.rfc-editor.org/rfc/rfc2616#section-2.2) Basic Rules  [4.1.1](https://www.rfc-editor.org/rfc/rfc6265#section-4.1.1). Syntax  The token and path cannot contain CTL. The regular expressions of the two are as follows: TOKEN_RE = %r"\A[[!-~]&&[^()<>@,;:\\\"/?=\[\]{}]]+\z" PATH_VALUE_RE = %r"\A[[ -~]&&[^;]]*\z" What's the difference between the following two uses? How do you match CTLs? `[!-~]` `[ -~]`