对于我的一个项目,我试图实现BitTorrent协议的一小部分,该协议可以在here找到。具体来说,我想使用它的“本地编码”部分,这是一种安全编码数据以通过套接字传输的方法。格式如下:如何将一定长度的字符串与正则表达式匹配
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})
但是,我似乎无法使用第一组作为第二组的长度。有没有什么好方法可以做到这一点?或者我接近这一切都是错误的,答案坐在我面前?
不知道答案,但原来的比特激流客户端是开源的。甚至在Python中也是如此!所以你可以试试看:http://bittorrent.cvs.sourceforge.net/viewvc/bittorrent/BitTorrent/ – MatrixFrog 2009-06-02 06:20:46
“现在你有两个问题!” :: rimshot :: – 2009-06-02 14:23:04
感谢您的链接,MatrixFrog。我认为我只是导入该文件,并在我的程序中使用原始实现。 – 2009-06-02 15:00:09