[^\x20-\x7E]
我看到这个模式被用于一个正则表达式,目的是从字符串中删除非ASCII字符。它是什么意思?
[^\x20-\x7E]
我看到这个模式被用于一个正则表达式,目的是从字符串中删除非ASCII字符。它是什么意思?
它表示类似于:所有不在范围\x20-\x7E
(十六进制0x20
至0x7E
)内的字符(使用符号^
来表示)。
根据http://www.asciitable.com/,这些字符是从空格到~
。
它意味着匹配任何非打印字符。
打印字符包括a到z,A到Z,0到9和符号如",;$#%等。
^ not
\x20 hex code for space character
- to
\x7e hex code for ~ (tilde) character
man ascii
[^ -~]
或者
[[:^cntrl:]]
最后一个正则表达式略有不同,它匹配任何非控制字符,包括扩展的ASCII字符(例如带重音符号的字符)和Unicode字符。
您可能不想限制自己只使用ASCII字符集,因为非美国地区经常使用此小范围之外的有效打印字符,例如øüéåç...