问题描述
做的是文件查找的小程序,当输入查找的文件名如:sc.txt时,包含sc字母的文本如discuss.txt也会出现在查找结果中,请问高手们只是怎么回事啊?急!!我的程序:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.IO;usingSystem.Text.RegularExpressions;namespacescui{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){this.Close();}privatevoidstart_Click(objectsender,EventArgse){jieguo.Text=String.Empty;zhaodao.Text=String.Empty;try{//创建一个DirectoryInfo对象DirectoryInfodir=newDirectoryInfo(mulu.Text);//基于用户输入的文件名创建一个Regex实例Regexregex=newRegex(filename.Text);if(dir.Exists==true){//如果存在,显示初始文本,在调用FindFile方法,//并将DirectoryInfo对象和格式规范字符串作为参数传递给它jieguo.Text="StartingDirectory:"+mulu.Text+"rn";jieguo.Text+="Searchingforfile:"+filename.Text+"rn";jieguo.Text+=newString('-',50)+"rn";//光标设置为沙漏图标this.Cursor=Cursors.WaitCursor;FindFile(dir,regex);}else{jieguo.Text="请从现有的磁盘开始查找!";}}catch(Exceptionexcep){MessageBox.Show(excep.Message);}finally{//光标恢复正常this.Cursor=Cursors.Default;if(zhaodao.Text==String.Empty)zhaodao.Text="没有匹配的文件!";}}//控制目录的分层次显示staticintindent=-10;//递增缩进量,显示当前DirectoryInfo实例的信息privatevoidFindFile(DirectoryInfodir,Regexregex){indent+=10;jieguo.Text+=newString('',indent)+dir.Name+""+dir.LastAccessTime+"rn";//DirectoryInfo实例的GetFiles方法将当前目录文件读到FileInfo对象数组中FileInfo[]filesInDir=dir.GetFiles();DirectoryInfo[]dirs=dir.GetDirectories();foreach(FileInfofiinfilesInDir){Matchmatch=regex.Match(fi.Name);if(match.Success){if(filename.Text!=String.Empty){zhaodao.Text+=fi.FullName+""+fi.Length+""+"rn";}}}//匹配文件foreach(DirectoryInfodir2indirs){Matchmatch1=regex.Match(dir2.Name);if(match1.Success){if(filename.Text!=String.Empty){zhaodao.Text+=dir2.FullName+"文件夹"+""+"rn";}}}//对子目录进行递归调用FindFile方法foreach(DirectoryInfodiindirs){FindFile(di,regex);}indent-=10;}privatevoidtxtFilesFound_TextChanged(objectsender,EventArgse){}privatevoidfilename_TextChanged(objectsender,EventArgse){}privatevoidForm1_Load(objectsender,EventArgse){}privatevoidjieguo_TextChanged(objectsender,EventArgse){}}}
解决方案
解决方案二:
^字符串开始$字符串结束
解决方案三:
^sc.txt$
解决方案四:
引用2楼smallfz的回复:
^sc.txt$
正则表达式应该这么写。
解决方案五:
完全看不出有什么用正则的必要直接字符串比较不可以吗。。。
解决方案六:
Regexregex=newRegex(@"^sc.txt$");
解决方案七:
Regexreg=newRegex(@"([sb])(sc.txt)([sb])",RegexOptions.IgnoreCase);Matchmatch=reg.Match(urlText);stringstrResult=match.Result("$2").ToString();