我想解析一个叫做 Docklight 的串口监控程序的输出(强烈推荐)
它输出“十六进制”字符串:或一系列(两个大写十六进制数字后跟一个空格)。对应的正则表达式为:([0-9A-F]{2} )+
例如:'05 03 DA 4B 3F '
当程序检测到特定的字符序列时,它会在“十六进制”字符串中放置注释。例如:
'05 03 04 01 0A The Header 03 08 0B BD AF The PAYLOAD 0D 0A The Footer'
注释是以下格式的字符串 ' .+ '
(一个字符序列前面有一个空格,后面跟着一个空格)
我想去掉评论。例如,上面过滤的“十六进制”字符串将是:
'05 03 04 01 0A 03 08 0B BD AF 0D 0A '
我如何使用正则表达式执行此操作?
最佳答案
你可以试试 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']
正则表达式中的\b
匹配一个“词边界”。
当然,如果串行监视器插入类似 THIS BE THE HEADER
的内容,您的输入就会有歧义。
关于Python:十六进制正则表达式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3395656/