解释一下这两个正则表达式(八进制表示法和十六进制表示法)

问题描述 投票:0回答:3

我知道这是一个愚蠢的问题,但我想知道下面每个序列的简单含义是什么。

\[0-7]{1,3} 

与正则表达式匹配的字符序列是八进制表示的字符

\x[0-9A-Fa-f]{1,2}

与正则表达式匹配的字符序列是十六进制表示的字符

php regex hex octal
3个回答
4
投票

这意味着如果您有像

"foo bar \041"
这样的字符串,
\041
将被视为字符的八进制表示。与十六进制序列类似。

正则表达式定义了字符序列必须遵循的结构,以便被解释为八进制或十六进制表示:

  • 对于八进制:斜线
    \
    后跟
    0
    7
    之间的一到三位数字。
  • 对于十六进制:斜线
    \
    后跟
    x
    后跟一两个字符,可以是数字或大写或小写字母。

查看 ASCII 表,了解每个字符的八进制和十六进制等效值。

例如:

echo "\064\062"; // echos 42

十六进制:

echo "\x52\x50";

2
投票

这两个正则表达式定义了数字的格式化方式。

[0-7]
表示允许 0 到 7 之间的所有数字,后面的
{1,3}
表示可能存在 1 到 3 个数字。

类似地,在第二个正则表达式中,

[0-9A-Fa-f]
表示0到9之间的所有数字、A到F之间的所有大写字母以及a到f之间的所有小写字母。
{1,2}
表示必须有一个或两个这些数字/字母。


0
投票

您的正则表达式有问题,它无法正确测试字符串,因为您的开头没有 ^ 结尾没有 $,但没关系。

好的,第一个是

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 可能是一个错误...

© www.soinside.com 2019 - 2024. All rights reserved.