fork download
  1. import re
  2. payload = b'\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x13\x04\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x13\x04'
  3. messages = re.split(b'(?:\xff){8}', payload) # Invalid, too many empty elements
  4. print(messages)
  5. messages = re.split(b'(?:(?:\xff){8})+', payload) # Invalid, there are leading empty elements
  6. print(messages)
  7. messages = re.split(b'(?:(?:\xff){8})+', re.sub(b'^(?:(?:\xff){8})+', b'', payload)) # Valid, but not best approach with removing the initial delimiters
  8. print(messages)
  9. messages = [x for x in re.split(b'(?:\xff){8}', payload) if x] # Best approach: let the regex do its work, and discarding emoty elements is left for the if
  10. print(messages)
  11. messages = list(filter(None, messages))
  12. print(messages)
Success #stdin #stdout 0s 9992KB
stdin
Standard input is empty
stdout
[b'', b'', b'\x00\x13\x04', b'', b'\x00\x13\x04']
[b'', b'\x00\x13\x04', b'\x00\x13\x04']
[b'\x00\x13\x04', b'\x00\x13\x04']
[b'\x00\x13\x04', b'\x00\x13\x04']
[b'\x00\x13\x04', b'\x00\x13\x04']