Skip to main content
 首页 » 编程设计

Python:十六进制正则表达式问题

2024年08月12日38zhenyulu

我想解析一个叫做 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 的内容,您的输入就会有歧义。