douduan6731 2012-07-12 17:20 采纳率: 0%
浏览 139
已采纳

带有空格的十六进制的正则表达式

Im trying to figure out why this regex doesn't match this line, but i have no more ideas.

(?:([a-zA-Z0-9]{2})\s\s)+
53  65  72  76  65  72  3a  20  41  70  61  63  68  65  00  45  

but this doesn't catch all the hex bytes ...

UPD: i need to catch every bite into preg_match $results

  • 写回答

3条回答 默认 最新

  • douxian1895 2012-07-12 17:30
    关注

    That regex does match that line, assuming that the line you've pasted into your question is exactly the line you're matching against:

    <?php
    $hex = "53  65  72  76  65  72  3a  20  41  70  61  63  68  65  00  45  ";
    
    preg_match('/(?:([a-zA-Z0-9]{2})\s\s)+/', $hex, $matches);
    var_dump($matches);
    

    Output:

    array(2) {
      [0]=>
      string(64) "53  65  72  76  65  72  3a  20  41  70  61  63  68  65  00  45  "
      [1]=>
      string(2) "45"
    }
    

    Most likely what you're trying to do is to get an array of the individual hex bytes, though, so if you're using code similar to the above with that regex, then you're doing it wrong. It should be something like this, instead:

    preg_match_all('/([a-zA-Z0-9]{2})\s{2}/', $hex, $matches);
    // $matches[1] will be your array of hex bytes
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?