我试图捕捉消息的多个模式如下:捕获多个模式
line ="8=FIX.4.4^A9=0424^A35=W^A49=BROKER02^A56=FIRM01^A52=20120525-11:41:31.421^A34=000003^A55=USD/JPY^A262=1^A268=6^A269=0^A270=79.513^A271=500000^A299=869589960^A5020=20120529^A269=0^A270=79.511^A271=500000^A299=869589961^A5020=20120529^A269=0^A270=79.507^A271=1000000^A299=869589962^A5020=20120529^A269=1^A270=79.517^A271=500000^A299=869589963^A5020=20120529^A269=1^A270=79.519^A271=500000^A299=869589964^A5020=20120529^A269=1^A270=79.523^A271=1000000^A299=869589965^A5020=20120529^A10=191^A"
p1 = re.compile(r'(55=.*?)\^A')
p2 = re.compile(r'(55=.*?)\^A+(299=.*?)\^A+(5020=.*?)\^A')
ret1 = re.findall(p1, line)
ret2 = re.findall(p2, line)
对于P1和P2,我希望RET1应该是相同的RET2的第一部分。然而,我得到的是:
['55=USD/JPY']
[('55=USD/JPY^A262=1^A268=6^A269=0^A270=79.513^A271=500000', '299=869589960', '5020=20120529')]
这是为什么?为什么第一部分捕获超过^ A? 谢谢!
这是没有意义的实现你想要的。 '(55 =。*?)\^A'不符合'55 =美元/日元' – sln