Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式中[^\x20-\x7E]的用途_Regex - Fatal编程技术网

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

Regex 正则表达式中[^\x20-\x7E]的用途,regex,Regex,我看到这个模式用于正则表达式,其目标是删除非ascii 字符串中的字符。它的意思是什么?它的意思是“任何不是十六进制范围0x20到0x7E的字符代码,即32到126的字符代码”。它的意思是:所有不在范围\x20-\x7E(十六进制0x20到0x7E)内的字符 根据,这些是从空格到~的字符,括号[]内的插入符号(^)表示“不”,而\x20-\x7E表示ascii字符的范围,其中\x20(空格)是范围的开始,而\x7E(~)是范围的结束。它基本上是任何不是字母、数字或普通标点符号的东西。它意味着匹配

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

它的意思是“任何不是十六进制范围0x20到0x7E的字符代码,即32到126的字符代码”。

它的意思是:所有不在范围
\x20-\x7E
(十六进制
0x20
0x7E
)内的字符


根据,这些是从空格到~

的字符,括号[]内的插入符号(^)表示“不”,而\x20-\x7E表示ascii字符的范围,其中\x20(空格)是范围的开始,而\x7E(~)是范围的结束。它基本上是任何不是字母、数字或普通标点符号的东西。

它意味着匹配任何不是打印字符的字符

打印字符包括a到z、a到z、0到9以及“;$”等符号

所有ascii打印字符都位于这两个字符之间

此语句匹配非ascii字符以及ascii控制(非打印)字符,如bell、tab、null和其他字符

^ not
\x20 hex code for space character
- to 
\x7e hex code for ~ (tilde) character
在unix系统上查看匹配的字符

在perl中,您还可以将其编写为

man ascii

最后一个稍有不同,因为它匹配任何非控制字符,包括扩展ascii(例如重音字符)和unicode


您可能不想将自己仅限于ascii,因为非美国地区通常使用这个小范围之外的有效打印字符,例如øüåç…

即可打印字符。值得注意的是,您也可以使用API进行检查。例如,在Java中,您可以使用Java.lang.Character.isISOControl(字符)还有一些类似的方法可以使代码更具可读性。有些语言没有用于此目的的API。在PHP中,您必须执行类似的操作来提取特殊字符:preg_replace_回调('/[^\x20-\x7f]/',函数($match){return do_something_WITH_special_CHARS($match[0]),$url);我想您的意思是[^[:print:]对于最后一个。POSIX字符类表示法包括方括号和冒号,整个内容必须放在另一组方括号中。(当然,[:cntrl:]是错误的类。)然而,POSIX类也应该是区域敏感的,这意味着它们可以匹配重音字母和基本ASCII集.cntrl确实与以前的不同,因为它将包括扩展ascii甚至unicode范围内的打印字符,但我相信这很可能就是我们的意图。我建议不要使用POSIX字符类,特别是在这样的情况下,我们不知道使用的是哪种正则表达式风格d、 它运行在哪个操作系统上,或者在哪个语言环境中。所有这些因素都可以改变它们的行为。这个答案最完整:[^\x20-\x7E]不仅限于“不打印字符”。它还匹配非ASCII字符,如“ä”、“ö”等。我认为,人们经常使用[^\x20-\x7E]来处理这些特殊字符(umlauts)。
man ascii
[^ -~]
[[:^cntrl:]]