我知道这是一个愚蠢的问题,但我想知道下面每个序列的简单含义是什么。
\[0-7]{1,3}
与正则表达式匹配的字符序列是八进制表示的字符
\x[0-9A-Fa-f]{1,2}
与正则表达式匹配的字符序列是十六进制表示的字符
这意味着如果您有像
"foo bar \041"
这样的字符串,\041
将被视为字符的八进制表示。与十六进制序列类似。
正则表达式定义了字符序列必须遵循的结构,以便被解释为八进制或十六进制表示:
\
后跟 0
和 7
之间的一到三位数字。 \
后跟 x
后跟一两个字符,可以是数字或大写或小写字母。查看 ASCII 表,了解每个字符的八进制和十六进制等效值。
例如:
echo "\064\062"; // echos 42
十六进制:
echo "\x52\x50";
这两个正则表达式定义了数字的格式化方式。
[0-7]
表示允许 0 到 7 之间的所有数字,后面的 {1,3}
表示可能存在 1 到 3 个数字。
类似地,在第二个正则表达式中,
[0-9A-Fa-f]
表示0到9之间的所有数字、A到F之间的所有大写字母以及a到f之间的所有小写字母。 {1,2}
表示必须有一个或两个这些数字/字母。
您的正则表达式有问题,它无法正确测试字符串,因为您的开头没有 ^ 结尾没有 $,但没关系。
好的,第一个是
match range 0-7 one 1 to 3 charcters
第二个是
match range 0-9 AND A-F (capital) AND a-f(small) 1 to 2 charcters
第二个中的 x 可能是一个错误...