不要用正则表达式解决一切问题。
别忘了你用的是 Perl,不是正则语。
不要把代码写成一坨意大利面条。
【 在 katyusza (二十六,炖猪肉~) 的大作中提到: 】
: 小弟正在用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 27.38.197.*