Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python: hexadecimal regular expression question

I want to parse the output of a serial monitoring program called Docklight (I highly recommend it) It outputs 'hexadecimal' strings: or a sequence of (two capital hex digits followed by a space). the corresponding regular expression is: ([0-9A-F]{2} )+ for example: '05 03 DA 4B 3F '

When program detects particular sequences of characters it places comments in the 'hexadecimal ' string. for example:

'05 03 04 01 0A  The Header 03 08 0B BD AF  The PAYLOAD 0D 0A  The Footer'

comments are strings of the following format ' .+ ' (a sequence of characters preceded by a space and followed by a space)

I want to get rid of the comments. for example, the 'hexadecimal' string above filtered would be:

'05 03 04 01 0A 03 08 0B BD AF 0D 0A '

how do i go about doing this with A regular expression?

like image 204
random guy Avatar asked Jan 01 '26 22:01

random guy


1 Answers

You could try re.findall():

>>> a='05 03 04 01 0A  The Header 03 08 0B BD AF  The PAYLOAD 0D 0A  The Footer'
>>> re.findall(r"\b[0-9A-F]{2}\b", a)
['05', '03', '04', '01', '0A', '03', '08', '0B', 'BD', 'AF', '0D', '0A']

The \b in the regular expression matches a "word boundary".

Of course, your input is ambiguous if the serial monitor inserts something like THIS BE THE HEADER.

like image 63
Greg Hewgill Avatar answered Jan 03 '26 12:01

Greg Hewgill



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!