有这样的字符串: [upload=jpg]UploadFile/2005-2/2005221114956889.jpg[/upload]bbbb[upload=txt]UploadFile/2005-2/2005221161330442.txt[/upload]我要把upload=后的jpg,txt等文件类型,以及后面的[upload=]和[/upload]间的文件信息取出来,请问在c#中用那个方法呢,表达式该如何呢?
  谢谢

解决方案 »

  1.   

    string tmp="[upload=jpg]UploadFile/2005-2/2005221114956889.jpg[/upload]bbbb[upload=txt]UploadFile/2005-2/2005221161330442.txt[/upload]";
    Regex re=new Regex(@"(?<=(upload=))[a-zA-Z]{3}");
    MatchCollection mc=re.Matches(tmp);
    foreach(Match ma in mc)
    {
    treeView1.Nodes.Add(ma.Value.ToString());
    }得到jpg txt string tmp="[upload=jpg]UploadFile/2005-2/2005221114956889.jpg[/upload]bbbb[upload=txt]UploadFile/2005-2/2005221161330442.txt[/upload]";
    string aa=Regex.Replace(tmp,@"\[[a-z]*\=[a-z]{3}\]","");
    string bb=Regex.Replace(aa,@"\[\/[a-z]*\]","\n");
    string cc=Regex.Replace(bb,@"bbbb","");
    richTextBox1.Text=cc.ToString();得到UploadFile/2005-2/2005221114956889.jpg
        UploadFile/2005-2/2005221161330442.txt测试通过。
      

  2.   

    谢谢楼上的,不好意思,可能是我表达的有问题,格式是[upload=×××]×××[/upload]
    有不同的组合方法,也就是说,字符串是不定的,上面的代码还可以吗?可以取到类似 data[1]={jpg,UploadFile/2005-2/2005221114956889.jpg}
                   data[2]={txt,UploadFile/2005-2/2005221161330442.txt}
                  data[3]=....
      这样结果吗?
    谢谢
      

  3.   

    我看下,好像还是表达的不好,
    就是2维数组,大概这样data[1][0]=jpg ,data[1][1]=UploadFile/2005-2/2005221114956889.jpg
     会不会清楚点?
    不好意思,谢谢
      

  4.   

    string regexStr = "\\[upload=([^\\]]+)\\]([^\\[]+)";
    string yourStr = "";
    MatchCollection mc = Regex.Matches(yourStr, regexStr);
    foreach(Match m in mc)
    {
        string type = m.Groups[1].Value; //jpg、text
        string path = m.Groups[2].Value; //path
    }