2016-08-11 22 views
-2

データファイルを解析する必要があります。私は正規表現(.NET)を使用すると、この式で始まっ:正規表現はバイナリデータと一致する必要があります

#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:。+?)) 'を使用して、*任意の* 1つ以上の文字にマッチさせてください。 –

答えて

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:。*?)))'を '(?。*?)' 'RegexOptions.Singleline'フラグを' Regex.Match'に渡す必要があります。 –

関連する問題