正则表达式的问题 格式为2009-08-15-08-15-42.jpg或者2009-08-15-08-15-53.gif如何写这样格式的正则表达式?各位大侠请指教 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 "\d{4}\-\d{2}-\d{2}-\d{2}-\d{2}-\d{2}\.(?:jpg|gif)"试一下 "^\d{4}\-\d{2}-\d{2}-\d{2}-\d{2}-\d{2}\.(?:jpg|gif)$" (([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) 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); } }这是我删除图片的函数,我觉得是正则表达式的问题!我试了前面几位仁兄的都没有成功. 在删除前,先判断里面的jpg文件存不存在,这样就可以知道哪里出错了 跟踪一把 filecontent 就知道问题所在了. 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) 我试过了,上面的正则表达式只能取年月日而已,后面的时分秒取不出来的 正规没有问题\d{4}\-\d{2}-\d{2}-\d{2}-\d{2}-\d{2}\.(?:jpg|gif)你先查查成数据库里读取的数据 string word = match.Groups["word"].Value; //这句有问题,你上面好像没有分组吧 word // null 查查看看还有你的思路是什么,说出来看看即然你查出来的文件名,直接删除那个文件就是的,还要用正规分析做什么? 我的思路就是将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>"); } } 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 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 我看了你是用静态regex的,而要是里面有很多个图片呢?我也试过你的程序了,没有什么问题。只是,我要的是可以对很多图片进行操作的 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); } 难道,你不知道将 re.Matches(变量) sql语句多条件查询? 求一个petshop的例子研究啊 请教一个在母模板中使用js问题 为什么connection 会关闭 ? 用DateGrid显示数据视图后,修改数据的问题 请教asp.net做的web中能否加入数字签名 WEB用户控件? 事件何时才会触发? 请教各位!我的页面文件和代码文件在vs.net打不开了,什么原因? .Net让我欢喜让我忧!无法创建 Web 项目??? 用asp.net实现文件下载到指定目录,而不弹出对话框???? 帮看下,是什么引起的,一会好用,一会不行.
"^\d{4}\-\d{2}-\d{2}-\d{2}-\d{2}-\d{2}\.(?:jpg|gif)$"
{
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);
}
}这是我删除图片的函数,我觉得是正则表达式的问题!我试了前面几位仁兄的都没有成功.
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)
我试过了,上面的正则表达式只能取年月日而已,后面的时分秒取不出来的
\d{4}\-\d{2}-\d{2}-\d{2}-\d{2}-\d{2}\.(?:jpg|gif)你先查查成数据库里读取的数据
string word = match.Groups["word"].Value; //这句有问题,你上面好像没有分组吧
word // null 查查看看还有你的思路是什么,说出来看看
即然你查出来的文件名,直接删除那个文件就是的,还要用正规分析做什么?
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>");
}
}
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
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);
}