正则表达式中[^ \ x20- \ x7E]的用途

时间:2009-06-11 19:59:18

标签: regex

 [^\x20-\x7E]

我看到这个模式用于正则表达式,其目标是删除非ascii 字符串中的字符。这是什么意思?

4 个答案:

答案 0 :(得分:45)

它表示类似: ^范围内的所有字符(\x20-\x7E)(十六进制0x200x7E)。

根据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(〜 )结束了。它基本上不是字母,数字或常见标点符号。