小弟正在用Perl解析类似如下的数据帧:
FC 90 - 12 - 00 00 00 35
FC 90 - 13 - 00 00 00 10 - 60d85e43acf4a5a41ba82838888bedf5
FC 90 - 13 - 00 00 00 10 - 7814b73d1a155b2912e7b6a66fb1d6fc
FC 90 - 13 - 00 00 00 10 - 5425ae073252235a7bbaca79ec5cde27
FC 90 - 13 - 00 00 00 05 - 89c3599feb
FC 90 - 14 - FF FF FF FF
首帧包含固定pattern和数值35(hex),
末帧是固定pattern,
中间那些帧携带有效数据,每帧内的数据量由帧内的length域给出,例如:
第2/3/4行:10(hex)=16(dec),所以后面跟了16字节(32个字符);
第5行:携带5个字节(10个字符)。
连字符、回车换行符、空格这些都很好删,
但是解析帧结构的时候犯了难,目前我能搞出来的最接近的正则表达式是:
my @frames = $fultxt =~ /fc9012[0-9a-f]{8}(fc9013[0-9a-f]{8}[0-9a-f]{32})*/g;
但是这显然不够;
我想用正则表达式来抓取length域,
再用capture到的长度信息来指定后续匹配的字符数量,
但是不知道这regex该怎么写,
哪位前辈可以给点提示,
先行谢过!
--
FROM 117.32.153.*