有一段链接文本,他可能是string path1 = "\\abc\def\123\456\789"
也有可能是string path2 = "\\abc\def\123\456\789\" 或 string path3 = "\\abc\\def\\123\\456\\789\\"
将后3个文件夹的名称提取出来放入string str1 = "123", string str2 = "456" string str3 = "789" ,正则表达式该怎么写呢?

解决方案 »

  1.   

    不用正则表达式吧,用split就可以了string[] ss = str.Split('\\');
    ss[2],ss[3],ss[4]就是你要的东西
      

  2.   

    自己想出来了,这个写行么?
    (?<str1>\w+)[\\]+(?<str2>\w+)[\\]+(?<str3>\w+)[\\]*$
      

  3.   

    string path3 = @"\\abc\\def\\123\\456\\789\\";        string patternstr = @"\\\\?abc\\\\?def\\\\?(?<str1>\d+)\\\\?(?<str2>\d+)\\\\?(?<str3>\d+)\\?\\?";        Match m = Regex.Match(path3, patternstr);
            if (m.Success)
            {
                Response.Write(m.Groups["str1"].Value + "<br>" + m.Groups["str2"].Value + "<br>" + m.Groups["str3"].Value);
            }
      

  4.   

    回复2楼,ss[2],ss[3],ss[4]不行,因为可能前边链接很长,比如\\abc\def\hij\klm\nop\qrst\123\456\789\
      

  5.   

    string regex = "path=(\"{1}|\'{1}|)(\\\\\\\\abc\\\\def\\\\)(?<folder1>[^\\\\]*)(?<folder2>[^\\\\]*)(?<folder3>[" +
    "^\\\\]*)(\"{1}|\'{1}|)";
      

  6.   

    string regex = "path=(\"{1}|\'{1}|)(\\\\abc\\def\\)(?<folder1>[^\\]*)(?<folder2>[^\\]*)(?<folder3>[^\\]*)(" +
    "\"{1}|\'{1}|)";
      

  7.   

    (?<str1>\w+)[\\]{1,2}(?<str2>\w+)[\\]{1,2}(?<str3>\w+)[\\]{0,2}$
      

  8.   

    没怎么看懂楼主的意思,是要取最后3层目录吗?
    string[] str=Regex.Split(path1.Trim('\\'),"\\+");
      

  9.   


    '要最后三个目录?都是数字的
    dim objRegex as RegEx
    dim objMatch as Match
    dim objMatchCollection as MatchCollectionobjRegex =new RegEx("\d+")
    objMatchCollection=objRegex.Matchs("\\abc\def\hij\klm\nop\qrst\123\456\789\")
    for each objMatch in objMatchCollection 
    '...
    next objMatch 
      

  10.   

    那你确定是后3个吗?如果是的话
    string[] ss = str.Split('\\'); 
    ss[ss.Length-1],ss[ss.Length-2],ss[ss.Length-3]不是就可以了吗