2016-08-11 3 views
-2

데이터 파일을 구문 분석해야합니다. 나는 정규식 (.NET)을 사용하려면이 표현과 함께 시작 : Regex는 이진 데이터와 일치해야합니다.

#mux:(?<mux>[a-z0-9 ]+)#|#curr: (?<curr>\d+)#|#pot:(?<pot>\d+)#|#data#(?<data>\w+)#EOC# 

내 데이터 파일의 내용

모습 :

#pot: 80##curr: 200##mux: rp 0 1 rn 0 2##data# ... binary data ... #EOC# 

이 내 데이터가 예를 들어 888입니다만큼 잘 작동하지만 내 데이터는 이진 데이터로 구성되어 있으므로 정규식에서 어떻게 처리 할 수 ​​있습니까? 난 그냥 '내 데이터 패턴에 \w+ 대신에 구조체가 필요합니다. 정확히 어떤 문자 나 바이트 값과도 일치합니다.

도움을 주셔서 감사합니다.

+0

정규식은 원시 이진 데이터를위한 것이 아니라 문자열 용입니다. –

+0

을 사용할 수 있습니다. 어떤 것과도 매치 할 수 있습니다. – elyashiv

+0

명확한 질문은 아니지만 '(? [^ #] +)'이 필요합니다. 그렇지 않으면'(? (? s :. +?))'를 사용하여 하나 이상의 문자를 일치 시키되 가능한 한 적게하십시오. –

답변

0

나는 RegexOptions.Singleline 옵션 게으른 도트 패턴 .*?을 사용하는 것이 좋습니다 :

#mux:(?<mux>[a-z0-9 ]+)#|#curr: (?<curr>\d+)#|#pot:(?<pot>\d+)#|#data#(?<data>(?s:.*?))#EOC# 
                       ^^^^^^^^ 

regex demo

그것은 가능한 몇 가지로 #EOC# (첫 번째까지) 어떤 0+ 문자와 일치합니다 참조하십시오.

+0

THAAAAANKS, 시도해보십시오. – Gerhard

+0

인라인 수정 자 그룹'(? s : ...)'을 사용했지만'(? (? s :. *?)))'를'(? . *?)'로 바꿀 수는 있지만 'Regex.Match'에'RegexOptions.Singleline' 플래그를 넘겨 줄 필요가 있습니다. –

관련 문제