私のプロジェクトでは、BitTorrentプロトコルの一部を実装しようとしていますが、これはhereです。具体的には、ソケットの転送用にデータを安全にエンコードするための「Bencoding」部分を使用したいと思います。形式は次のとおりです。特定の長さの文字列と正規表現を一致させる方法
8:a string => "a string"
i1234e => 1234
l1:a1:be => ['a', 'b']
d1:a1:b3:one3:twoe => {'a':'b', 'one':two}
エンコード部分は簡単ですが、デコードはかなり面倒です。たとえば、文字列のリストがある場合、個々の文字列に分割する方法はありません。私はPyParsingとカスタムトークンパーサーを含むいくつかの異なるソリューションを試しました。私は現在、正規表現を使用しようとしていますが、それはかなりうまくいくようですが、私はまだ文字列の問題に悩まされています。私の現在の正規表現は次のとおりです。
(?P<length>\d+):(?P<contents>.{\1})
しかし、私は2番目のグループの長としての最初のグループを使用するように見えることはできません。これを行う良い方法はありますか?それとも私はこのすべてに間違っているのですか?答えは私の目の前に座っていますか?
未解答の確認が、元のビットトレントクライアントは、オープンソースです。そしてそれはPythonでさえあります!だから、あなたは周りを突く試みることができます:http://bittorrent.cvs.sourceforge.net/viewvc/bittorrent/BitTorrent/ – MatrixFrog
"そして今あなたは2つの問題があります! :: rimshot :: –
リンクありがとう、MatrixFrog。私はそのファイルをインポートし、私のプログラムで元の実装を使用するつもりだと思います。 –