[^\x20-\x7E]
我看到这个模式用于正则表达式,其目标是删除非ascii 字符串中的字符。这是什么意思?
答案 0 :(得分:45)
它表示类似: ^
范围内的所有字符(\x20-\x7E
)(十六进制0x20
到0x7E
)。
根据http://www.asciitable.com/,这些是从空格到~
的字符。
答案 1 :(得分:7)
表示匹配任何不打印字符的字符。
打印字符包括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(例如重音字符)和unicode。
您可能不希望仅限于ascii,因为非美国地区通常使用此小范围之外的有效打印字符,例如øüéåç...
答案 2 :(得分:3)
它表示“十六进制范围内的任何字符代码都不是0x20到0x7E,即32到126”。
答案 3 :(得分:2)
括号[]中的插入符号(^)表示“not”,而\ x20- \ x7E表示ascii字符的范围,其中\ x20(空格)是范围的开头,\ x7E(〜 )结束了。它基本上不是字母,数字或常见标点符号。