【发布时间】:2010-08-03 10:31:37
【问题描述】:
我想解析一个名为 Docklight 的串行监控程序的输出(我强烈推荐它)
它输出“十六进制”字符串:或一系列(两个大写十六进制数字后跟一个空格)。对应的正则表达式为:([0-9A-F]{2} )+ 例如:'05 03 DA 4B 3F '
当程序检测到特定的字符序列时,它会将 cmets 放在“十六进制”字符串中。例如:
'05 03 04 01 0A The Header 03 08 0B BD AF The PAYLOAD 0D 0A The Footer'
cmets 是以下格式的字符串 ' .+ '(一系列字符,前面有一个空格,后面有一个空格)
我想摆脱 cmets。例如,上面过滤的“十六进制”字符串将是:
'05 03 04 01 0A 03 08 0B BD AF 0D 0A '
我该如何使用正则表达式来做到这一点?
【问题讨论】:
-
@SRT:假设 cmets 中没有 2 个字母的十六进制单词,否则输入会不明确。但是,cmets 可以包含带有(连续)十六进制数字的较长单词
-
ok.看看 greg 的回答
-
请注意:我通常用来测试正则表达式的是这个免费的在线测试器,它也适用于 Python 表达式(python 和 .net 表达式的大部分是相同的风格):regexhero.net/tester
-
你如何推荐一个没有易于解析输出选项的包?
-
@JM:我推荐它,因为它是我发现的唯一可以在 Windows PC 上成功处理杀手级串行通信的工具。如果 cmets(用户定义的)遵循某种语法(例如,包含方括号),那么解析将是小菜一碟。我的客户不是这样
标签: python regex regex-negation