<a href="/uploads/111.rar">/uploads/111.rar </a> 取文件路径,如何用正则表达式实现
string str = "<a href=\"/uploads/111.rar\">/uploads/111.rar </a>";
            System.Text.RegularExpressions.Regex  reg=new  System.Text.RegularExpressions.Regex(@"<a\s[^>].*?href=""(?<src>[^""].*)""[^>].*?>",System.Text.RegularExpressions.RegexOptions.IgnoreCase);  
            System.Text.RegularExpressions.MatchCollection m = reg.Matches(str); //设定要查找的字符串
            for (int i = 0; i < m.Count; i++)
            {
                Response.Write(m[i].Groups["src"].ToString()+"<br>");
            }这样写无法获取路径 /uploads/111.rar

解决方案 »

  1.   

    string strInput = " <a href=\"/uploads/111.rar\">/uploads/111.rar </a>"; 
    string strPattern = @"(/[\W-]+)+\.(rar)?(doc)?(txt)?";  
    Match m = Regex.Match(strInput, strPattern, RegexOptions.IgnoreCase); 
    string filepath=""; 
    while (m.Success) 

      GroupCollection mc = m.Groups; 
      filepath = m.Value; 
      return; 

    Response.Write(filepath); 
    如此可以匹配 rar doc txt 3种类型文件 如果需要其他类型继续往后添加就可以了
    如果想匹配所有类型的 正则这样写:
    string strPattern = @"(/[\W-]+)+\.[\W-]+"; 
      

  2.   


                string str = "<a href=\"/uploads/111.rar\">/uploads/111.rar </a> ";
                Console.WriteLine(Regex.Match(str, "href=\"([^\"]*)\"").Groups[1].Value);
      

  3.   

    本地测试成功  string str = "<a href=\"/uploads/111.rar\">/uploads/111.rar </a>";
           string  partten="<a href=\"(?<href>[^>]+)\">(?<topic>[^<]+)</a>";
           System.Text.RegularExpressions.Regex reg = new System.Text.RegularExpressions.Regex(partten, System.Text.RegularExpressions.RegexOptions.IgnoreCase);
            System.Text.RegularExpressions.MatchCollection m = reg.Matches(str); //设定要查找的字符串
            for (int i = 0; i < m.Count; i++)
            {
                Response.Write(m[i].Groups["href"].ToString() + "<br>");
            }
            Response.End();
      

  4.   

    string strPattern = @"(/[0-9A-Za-z_\-]+)+\.[A-Za-z]+"; 刚刚调试了一下 用这个正则没问题!