格式为2009-08-15-08-15-42.jpg或者2009-08-15-08-15-53.gif
如何写这样格式的正则表达式?各位大侠请指教

解决方案 »

  1.   

    "\d{4}\-\d{2}-\d{2}-\d{2}-\d{2}-\d{2}\.(?:jpg|gif)"试一下
      

  2.   


    "^\d{4}\-\d{2}-\d{2}-\d{2}-\d{2}-\d{2}\.(?:jpg|gif)$"
      

  3.   

    (([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)(?#匹配年月日,包括润平年)-([0-1][0-9]|2[0-4])-([0-5][0-9]|60)-([0-5][0-9]|60)(?#匹配时分秒)\.(?:jpg|gif)
      

  4.   

        private void selectPic()
        {
            Regex regEx = new Regex(@"^\d{4}-\d{2}-\d{2}-\d{2}-\d{2}-\d{2}.(?:jpg|gif)");
            string filecontent;
            filecontent = getFilecontent();
            MatchCollection matches = regEx.Matches(filecontent);
            foreach (Match match in matches)
            {
                string word = match.Groups["word"].Value;
                delPicture(word);
            }
        }    private string getFilecontent()
        {
            string filecontent = "";
            SqlConnection conn = new SqlConnection(connectionstring);
            try
            {
                conn.Open();
                string strSQL = "select filecontent from news where id=" + Request.QueryString["id"];
                SqlCommand cmd = new SqlCommand(strSQL, conn);
                filecontent = cmd.ExecuteScalar().ToString();
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            }
            finally
            {
                conn.Close();
            }
            return filecontent;
        }    private void delPicture(string picName)
        {
            string delfilepath = HttpContext.Current.Server.MapPath("~/").ToString() + "File\\" + picName;
            try
            {
                File.Delete(delfilepath);
                Response.Write("<script>alert('图片删除成功!');</script>");
            }
            catch (Exception ex)
            {
                Response.Write(ex.Message);
            } 
        }这是我删除图片的函数,我觉得是正则表达式的问题!我试了前面几位仁兄的都没有成功.
      

  5.   

    在删除前,先判断里面的jpg文件存不存在,这样就可以知道哪里出错了
      

  6.   

    跟踪一把 filecontent 就知道问题所在了.
      

  7.   

     
    fus53
     
    (輕揚) 等 级: 
     #3楼 得分:0回复于:2009-08-18 09:37:59(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)(?#匹配年月日,包括润平年)-([0-1][0-9]|2[0-4])-([0-5][0-9]|60)-([0-5][0-9]|60)(?#匹配时分秒)\.(?:jpg|gif) 
     
    我试过了,上面的正则表达式只能取年月日而已,后面的时分秒取不出来的
      

  8.   

    正规没有问题
    \d{4}\-\d{2}-\d{2}-\d{2}-\d{2}-\d{2}\.(?:jpg|gif)你先查查成数据库里读取的数据
     string word = match.Groups["word"].Value;  //这句有问题,你上面好像没有分组吧
      
      word // null  查查看看还有你的思路是什么,说出来看看
    即然你查出来的文件名,直接删除那个文件就是的,还要用正规分析做什么?
      

  9.   

    我的思路就是将2009-08-15-08-15-42.jpg或者2009-08-15-08-15-53.gif 格式的图片删除。我的数据库保存的是HTML代码,我先从数据库中查询出文章的HTML代码,然后从代码中找出图片,根据图片的名称再从文件中删除。上面的函数有点问题,我已经修改了,如下所示:
        private void selectPic()
        {
            string pattern = @"(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)-(([0-1][0-9])|(2[0-4]))-(([0-5][0-9])|60)-(([0-5][0-9])|60)\.(?:jpg|gif)$";
            string filecontent;
            filecontent = getFilecontent();
            MatchCollection matches = Regex.Matches(filecontent, pattern);
            if (matches.Count > 0)
            {
                foreach (Match match in matches)
                {
                    Response.Write("<script>alert('" + match.ToString() + "');</script>");
                    delPicture(match.ToString());
                }
            }
            else
            {
                Response.Write("<script>alert('没有图片信息');</script>");
            }
        }
      

  10.   

    string text = "<TABLE cellSpacing=4 cellPadding=0 width=\"98%\" border=0><TBODY><TR><TD class=\"p STYLE11\" vAlign=top align=middle>UniHz越线违法抓拍系统</TD></TR><TR><TD vAlign=top align=left><P class=txt>  UniHz越线违法抓拍系统,采用视频检测技术,使用数码相机抓拍违法证据。从数码照片可以清晰分辨车型、车身颜色、车牌号码和标志线(如双黄线等)。一旦监控区域内有压线违法车辆,系统自动抓拍,同时记录违法地点、违法类型、违法时间等信息。</P><P class=txt>功能特点</P><P class=txt>·系统采用视频检测技术,可以自动屏蔽诸如阴影、灯光、雨雾以及其他与车辆无关干扰,具有较高的准确识别率。<BR>·系统可以提供车辆违法越线行驶的证据;系统抓拍到的违法图片中可清楚的辨识车牌号码、车辆颜色、车身颜色、车型、车辆行驶路段、车辆行驶方向、道路标志线以及违法车辆越线情况。<BR>·照片数据可以通过网络自动传输,与中心服务器实时通讯,将违法信息(违法图象和相关信息)及时传至管理中心进行处理。<BR>·系统接口开放,具备良好的可拓展性和兼容性。</P><P><BR></P></TD></TR><TR><TD vAlign=top align=middle><IMG height=356 src=\"../../File/2009-08-18-14-53-06.gif\" width=450></TD></TR></TBODY></TABLE>";使用\d{4}\-\d{2}-\d{2}-\d{2}-\d{2}-\d{2}\.(?:jpg|gif)测试了上面的HTML代码,就是找不到2009-08-18-14-53-06.gif
      

  11.   

     Regex re = new Regex(@"\d{4}\-\d{2}-\d{2}-\d{2}-\d{2}-\d{2}\.(?:jpg|gif)", RegexOptions.IgnoreCase);
                Match mc = re.Match("<TABLE cellSpacing=4 cellPadding=0 width=\"98%\" border=0> <TBODY> <TR> <TD class=\"p STYLE11\" vAlign=top align=middle>UniHz越线违法抓拍系统 </TD> </TR> <TR> <TD vAlign=top align=left> <P class=txt>  UniHz越线违法抓拍系统,采用视频检测技术,使用数码相机抓拍违法证据。从数码照片可以清晰分辨车型、车身颜色、车牌号码和标志线(如双黄线等)。一旦监控区域内有压线违法车辆,系统自动抓拍,同时记录违法地点、违法类型、违法时间等信息。 </P> <P class=txt>功能特点 </P> <P class=txt>·系统采用视频检测技术,可以自动屏蔽诸如阴影、灯光、雨雾以及其他与车辆无关干扰,具有较高的准确识别率。 <BR>·系统可以提供车辆违法越线行驶的证据;系统抓拍到的违法图片中可清楚的辨识车牌号码、车辆颜色、车身颜色、车型、车辆行驶路段、车辆行驶方向、道路标志线以及违法车辆越线情况。 <BR>·照片数据可以通过网络自动传输,与中心服务器实时通讯,将违法信息(违法图象和相关信息)及时传至管理中心进行处理。 <BR>·系统接口开放,具备良好的可拓展性和兼容性。 </P> <P> <BR> </P> </TD> </TR> <TR> <TD vAlign=top align=middle> <IMG height=356 src=\"../../File/2009-08-18-14-53-06.gif\" width=450> </TD> </TR> </TBODY> </TABLE>");            Console.WriteLine(mc.Value);            Console.Read();
    结果
    //2009-08-18-14-53-06.gif
      

  12.   

    我看了你是用静态regex的,而要是里面有很多个图片呢?我也试过你的程序了,没有什么问题。只是,我要的是可以对很多图片进行操作的
      

  13.   

     Regex re = new Regex(@"\d{4}\-\d{2}-\d{2}-\d{2}-\d{2}-\d{2}\.(?:jpg|gif)", RegexOptions.IgnoreCase);
                MatchCollection mc = re.Matches("<TABLE cellSpacing=4 cellPadding=0 width=\"98%\" border=0> <TBODY> <TR> <TD class=\"p STYLE11\" vAlign=top align=middle>UniHz越线违法抓拍系统 </TD> </TR> <TR> <TD vAlign=top align=left> <P class=txt>  UniHz越线违法抓拍系统,采用视频检测技术,使用数码相机抓拍违法证据。从数码照片可以清晰分辨车型、车身颜色、车牌号码和标志线(如双黄线等)。一旦监控区域内有压线违法车辆,系统自动抓拍,同时记录违法地点、违法类型、违法时间等信息。 </P> <P class=txt>功能特点 </P> <P class=txt>·系统采用视频检测技术,可以自动屏蔽诸如阴影、灯光、雨雾以及其他与车辆无关干扰,具有较高的准确识别率。 <BR>·系统可以提供车辆违法越线行驶的证据;系统抓拍到的违法图片中可清楚的辨识车牌号码、车辆颜色、车身颜色、车型、车辆行驶路段、车辆行驶方向、道路标志线以及违法车辆越线情况。 <BR>·照片数据可以通过网络自动传输,与中心服务器实时通讯,将违法信息(违法图象和相关信息)及时传至管理中心进行处理。 <BR>·系统接口开放,具备良好的可拓展性和兼容性。 </P> <P> <BR> </P> </TD> </TR> <TR> <TD vAlign=top align=middle> <IMG height=356 src=\"../../File/2009-08-18-14-53-06.gif\" width=450> </TD> </TR> </TBODY> </TABLE>");            
                foreach (Match ma in mc)
                {
                    Console.WriteLine(ma.Value);
                }
      

  14.   

    难道,你不知道将   re.Matches(变量)