PHP从文本中提取7个字符的十六进制

PHP从文本中提取7个字符的十六进制,php,regex,Php,Regex,我想从文本中提取7个十六进制字符 $text = 'Lorem ipsum dolor sit amet, 1AA69C9 consectetuer adipiscing elit. Aenean commodo ligula eget dolor. 2de7890'; preg_match_all("/^[0-9A-Fa-f]{7}$/",$text,$result); print_r($result); 多谢各位 /^[0-9A-Fa-f]{7}$/在字符串的开头和结尾查找十六进制字符串

我想从文本中提取7个十六进制字符

$text = 'Lorem ipsum dolor sit amet, 1AA69C9 consectetuer adipiscing elit. Aenean commodo ligula eget dolor. 2de7890';

preg_match_all("/^[0-9A-Fa-f]{7}$/",$text,$result);
print_r($result);
多谢各位


/^[0-9A-Fa-f]{7}$/
在字符串的开头和结尾查找十六进制字符串


删除
^
$
并将它们改为单词边界

使用以下命令:

/\b[0-9a-f]{7}\b/i

/^[0-9A-Fa-f]{7}$/
在字符串的开头和结尾查找十六进制字符串


删除
^
$
并将它们改为单词边界

使用以下命令:

/\b[0-9a-f]{7}\b/i

您的正则表达式要求整个字符串只包含这七个十六进制字符

删除
^
$
以查找字符串中的任何字符,但请注意
abracadabra
将“匹配”为六位十六进制“数字”(
acadab
),因此可能存在其他此类误报。考虑使用这个代替:

"/\b[0-9a-z]{7}\b/i"

这将避免匹配单词的中间部分。

您的正则表达式要求整个字符串只包含这七个十六进制字符

删除
^
$
以查找字符串中的任何字符,但请注意
abracadabra
将“匹配”为六位十六进制“数字”(
acadab
),因此可能存在其他此类误报。考虑使用这个代替:

"/\b[0-9a-z]{7}\b/i"

这将避免单词中间的匹配。

从regexp stringthank you@hindsmost it's work(y)记住,其他常规单词与该产品匹配,比如
caffee
(我知道,只有6个字符,但你明白了)。@Boldewyn:我明白了,顺便说一句,我需要的十六进制总是混合的。可以使用正则表达式吗<代码>/\b[0-9a-f]{7}\b/i@Andy是的,但它看起来不太好看:
\b(?=[0-9a-Fa-f]*[0-9])[0-9a-Fa-f]{7}\b/
。它使用a来确保7个字符中至少有一个数字。(开始→ 断言后跟任意数量的十六进制数字(
*
)和一个数字→ 限制为正好7个十六进制数字的长度。)从regexp stringthank you@hindsmost它的工作(y)中删除
^
$
。请记住,其他常规单词与该产品匹配,如
caffee
(我知道,只有6个字符,但你明白了)。@Boldewyn:我明白了,顺便说一句,我需要的十六进制总是混合的。可以使用正则表达式吗<代码>/\b[0-9a-f]{7}\b/i@Andy是的,但它看起来不太好看:
\b(?=[0-9a-Fa-f]*[0-9])[0-9a-Fa-f]{7}\b/
。它使用a来确保7个字符中至少有一个数字。(开始→ 断言后跟任意数量的十六进制数字(
*
)和一个数字→ 限制为正好7个十六进制数字的长度。)…并将其替换为
\b
,应添加。我接受此答案,因为我的问题与十六进制有关。你的解释对我很有用。谢谢两位:)…并将其替换为
\b
,应添加。我接受此答案,因为我的问题与十六进制有关。你的解释对我很有用。谢谢你们两位:)