我需要解析包含FIX协议消息的日志文件。解析正则表达式中的FIX协议?
每一行都包含头信息(时间戳,日志记录级别,端点),后跟一个FIX有效载荷。
我用正则表达式来将头信息解析成命名组。例如:
<?P<datetime>\d{2}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}.\d{6}) (?<process_id>\d{4}/\d{1,2})\s*(?P<logging_level>\w*)\s*(?P<endpoint>\w*)\s*
然后我来到了FIX有效载荷本身(^ A是每个标签之间的分隔符),例如:
8=FIX.4.2^A9=61^A35=A...^A11=blahblah...
我需要从这个(如“A”从提取特定标签35 =或从11 =开始的“blahblah”),并忽略所有其他的东西 - 基本上我需要在“35 = A”之前忽略任何内容,以及在“11 = blahblah”之后的任何内容,然后忽略任何内容等。
我知道那里有一个库可能能够解析每一个标签(http://source.kentyde.com/fixlib/overv但是,如果可能的话,我希望在这里使用正则表达式,因为我真的只需要几个标签。
有没有在正则表达式中提取我需要的标签的好方法?
干杯, 维克多
这是比接受的更好的答案。当然,你需要考虑“len”字段。每个人都会忘记这些!另外,FIX消息可以包含换行符(即在标签58中),所以你需要使用re.DOTALL来确保。 – noahlz
正如在[这个问题](http://stackoverflow.com/questions/31198950/parsing-fix-message-in-regex/31199578#31199575)解释,这种解决方案有一个错误 - 它会失败,当两场比赛是邻。 – tripleee