你确定/name(\d+):(.*{23})/is 能得到正确结果吗,不明白:(.*{23})是什么意思,重复.* 23次?但.*已经包括了:后面的一切,请教请教

解决方案 »

  1.   

    回楼上,我确定/name(\d+):(.*{23})/is能得到正确结果。至于为什么我这里要取23个字符。name23:BitComet_1.06_setup.exe
    这个串的格式是name23的23表示,在:后面有23个字符长度的串为文件名,我要取的就是他。如果用.*的话,那就把所有字符都取出来了。而这个name23并不是固定的,所以首先要匹配出name后面的数字,然后再将这个数字用作.的长度。
      

  2.   

    BT文件是有统一格式的。
    用str_split将文件内容转换成数组,
    碰到:name23之后提取相应的文字串,一直到下一个:
    具体步骤我就不写了,lz自己编算法吧。至于用正则——可能我寡闻,从来没听说过用正则处理2进制数据,个人不推荐。
      

  3.   

    可能放{}里就失去意义了吧?
    js区也看到你的贴,用JS试了地确...
      

  4.   

    正则操作符解析优先级由高到低应该是这样的\  转义符 
    (), (?:), (?=), []  圆括号和方括号 
    *, +, ?, {n}, {n,}, {n,m}  限定符 
    ^, $, \anymetacharacter  位置和顺序 
    |  “或”操作 
    转义符应该在第一位啊,为什么还是会先解析{},实在搞不懂。