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*
I는 다음 FIX 페이로드 자체 올
는 예 (^ A는 각 태그 사이의 분리이다) :이 (예를 들어, "A"부터 특정 태그를 추출해야
8=FIX.4.2^A9=61^A35=A...^A11=blahblah...
35 =, 또는 11 =에서 "blahblah"), 다른 모든 것들을 무시합니다. 기본적으로 "35 = A"이전에는 아무것도 무시해야하며, "11 = blahblah"이후에는 아무것도 무시한 다음 그 후에 아무것도 무시합니다.
각 태그를 구문 분석 할 수있는 라이브러리가 있음을 알고 있습니다 (http://source.kentyde.com/fixlib/overv iew), 그러나 나는 정말로 단지 두 개의 태그 만 필요하기 때문에 가능한 경우 여기에서 정규식을 사용하는 간단한 접근 방법을 원했다.
정규식에서 필요한 태그를 추출하는 좋은 방법이 있습니까?
건배, 빅터
허용되는 답변보다 나은 답변입니다. 확실히 "len"필드를 고려해야합니다. 모두는 항상 이것들을 잊어 버립니다! 또한 FIX 메시지에는 줄 바꿈 문자 (태그 58)가 포함될 수 있으므로 re.DOTALL을 사용해야합니다. – noahlz
[이 질문에 설명] (http://stackoverflow.com/questions/31198950/parsing-fix-message-in-regex/31199578#31199575)이 솔루션에는 버그가 있습니다. 두 개의 일치 항목이있는 경우 실패합니다 인접한. – tripleee