开发者

Python regexp for data of byte numbers

How to make a regexp matching for a row of bytes?

For开发者_开发技巧 example how to check with regexp that binary data consists of (0-10 byte) characters?

data = 0x00 0x05 0x02 0x00 0x03 ... (not a string, binary data)


If you want to check that the string contains only characters between chr(0) and chr(10), simply use

re.match('^[\0-\x0A]*$',data)

For Python3, you can do the same with byte strings:

re.match(b'^[\0-\x0A]*$',b'\x01\x02\x03\x04')


This will match any code before space:

if re.search('[\0-\037]', line):
    # Contains binary data...

I'm not sure what you mean by "0-10 byte", but if you mean that you want to match only the byte values 0 to 10, then replace \037 with \012 in the above code.

Note that 0-10 aren't really the only codes that would suggest binary data; anything below \040 or above \0177 usually suggests binary data.


If you want check if all characters in the given string are in the range 0x00 to 0x0B (not inclusive), regex is way overkill. Try something like this:

>>> check_range = lambda x: ord(x) in set(range(0x00, 0x0B))
>>> s = '\x1\x2\x3\xA'
>>> s2 = 'abcde'

>>> print all(check_range(c) for c in s)
True
>>> print all(check_range(c) for c in s2)
False
>>>
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜