RegExを使用して、バイト文字列のBGPメッセージと一致させています。文字列はこのように見ている例バイト:Python 3でのバイトコードの正規表現
b'\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x13\x04\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\x00\x13\x04'
の\ XFF(8回)は、単一のメッセージを開始するには、「マジック」として使用されています。今私はそれらのそれぞれを解析するためにメッセージを分割したいと思います。
messages = re.split(b'\xff{8}', payload)
マッチングはうまくいきますが、メッセージ配列に空のフィールドがいくつかあります。
b''
b''
b'001304'
b''
b''
b'001304'
誰かがこの動作を説明できますか?それぞれの(正しい分割された)メッセージの間に2つの空のフィールドがあるのはなぜですか。より大きなバイト文字列では、各メッセージの間に空白フィールドが1つしかないことがあります。また
messages = re.split(b'(?:\xff){8}', payload)
^^^ ^
、単に複数の連続する8 \xff
sが最後にあなたの文字列にあります。
多分 'messages = re.split(b '(?:\ xff){8}'、ペイロード)'? –