0

我正在努力使用 PHP 正则表达式来匹配主字符串中的子字符串,但有一些条件

子字符串应该:

  1. ??字符串应该有 7 个连续字节,其中最多(3 个空字节)'000000',而不是一个

例如:

  1. 输入字符串:4455330000002211223311223377885233
    匹配:22112233112233

  2. 输入字符串:441553300000022
    匹配:无(因为它有 3 个空字节)

  3. 输入字符串:112233000000005511220011
    匹配:无(因为它有 3 个空字节)

  4. 输入字符串:11??0000002255
    匹配:无(因为其中包含 3 个空字节并且??其中包含)

  5. 输入字符串:426F6D650000010001020000
    匹配:(426F6D650000010001020因为它最多有 3 个空字节和 7 个连续的非空字节

  6. 输入字符串:426F6D650000010001000000
    匹配:无(因为没有 7 个连续的非空字节)

什么是正确匹配这些的好正则表达式?

4

2 回答 2

1

您可以尝试使用此正则表达式:

preg_match("/^[a-f0-9]{1,}$/is",$str)
于 2013-08-22T06:47:23.107 回答
0

并不是说这是最好的解决方案,但是这样的事情也可以在没有 REGEXP 的情况下完成,以防万一它可以帮助你:

$str = explode ('??', $string);
if (count ($str) > 1) // It includes at least one '??'

$str = explode ('00', $string);
if (count ($str) > 4) // It includes more than 3 times the '00' pattern

foreach ($str as $sub_string) {
    if (count ($sub_string > 13)) // One of the sub_string between the '00' patterns contains 7 bytes as wanted
}

如果您稍后必须回到您的代码,它会变得更容易维护。

于 2013-08-22T06:55:10.323 回答