[^\x20-\x7E]
Run Code Online (Sandbox Code Playgroud)
我看到这个模式用于正则表达式,其目标是从字符串中删除非ascii字符.这是什么意思?
Fla*_*tef 45
它说是这样的:这不是(所有字符^范围内)\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
Run Code Online (Sandbox Code Playgroud)
所有ascii打印字符都介于这两者之间.
此语句匹配非ascii字符以及ascii控件(非打印)字符,如bell,tab,null等.
看着
man ascii
Run Code Online (Sandbox Code Playgroud)
在unix系统上查看它匹配的字符.
在perl中,您也可以将其写为
[^ -~]
Run Code Online (Sandbox Code Playgroud)
要么
[[:^cntrl:]]
Run Code Online (Sandbox Code Playgroud)
最后一个略有不同,因为它匹配任何非控制字符,包括扩展的ascii(例如重音字符)和unicode.
您可能不希望仅限于ascii,因为非美国地区通常使用此小范围之外的有效打印字符,例如øüéåç...
| 归档时间: |
|
| 查看次数: |
42918 次 |
| 最近记录: |