2

これにより、なぜ badmatch エラーが発生するのですか? これが失敗する理由がわかりません:

<<IpAddr, ":*:*">> = <<"2a01:e34:ee8b:c080:a542:ffaf:*:*">>.
4

2 に答える 2

5

バイナリのパターン マッチングは左から右に進むためIpAddr、次のセグメントを試す前に最初に一致します。一致するまで後戻りはありません。のようなデフォルトの型付き変数は、IpAddr1 バイトに一致します。適切な説明とその他の例については、ビット構文式ビット構文を参照してください。

ここでパターン マッチングを使用する代わりに、binaryモジュールの使用を検討することもできます。あなたに役立つ 2 つの関数があります:binary:match/2/3binary:split/2/3. これらの検索は、あなたの問題により適している可能性があります。

re最後の代替手段として、正規表現とモジュールを使用してみることができます。

于 2012-07-03T10:26:30.167 に答える