我試圖捕捉消息的多個模式如下:捕獲多個模式
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