code: def pattern(token):
          
          token = ''.join([ c for c in token if c == '?' or c.isalnum() ])
          if len(token) % 2 != 0:
              raise ValueError("Missing characters in hex data")
          regexp = ''
          for i in compat.xrange(0, len(token), 2):
              x = token[i:i+2]
              if x == '??':
                  regexp += '.'
              elif x[0] == '?':
                  f = '\\x%%.1x%s' % x[1]
                  x = ''.join([ f % c for c in compat.xrange(0, 0x10) ])
                  regexp = '%s[%s]' % (regexp, x)
              elif x[1] == '?':
                  f = '\\x%s%%.1x' % x[0]
                  x = ''.join([ f % c for c in compat.xrange(0, 0x10) ])
                  regexp = '%s[%s]' % (regexp, x)
              else:
                  regexp = '%s\\x%s' % (regexp, x)
          return regexp
docs: Convert an hexadecimal search pattern into a POSIX regular expression.
  
          For example, the following pattern::
  
              "B8 0? ?0 ?? ??"
  
          Would match the following data::
  
              "B8 0D F0 AD BA"    # mov eax, 0xBAADF00D
  
          @type  token: str
          @param token: String to parse.
  
          @rtype:  str
          @return: Parsed string value.