正则表达式完全匹配问题

问题描述

做的是文件查找的小程序,当输入查找的文件名如: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();

时间: 2024-09-12 11:17:55

正则表达式完全匹配问题的相关文章

js正则表达式密码匹配

问题描述 js正则表达式密码匹配 大神们,我在在js中正则表达式判断密码是否匹配, 这方面我是新手还请大神们指点: (1)同时包含数字,字母,特殊符号 (2)包含字母和数字 (3)只包含数字或字母 解决方案 试试吧,不一定对. 正则:(1)/^(?!d+$)(?![a-zA-z]+$)(?![^0-9a-zA-Z]+$)/ (2)/^([a-z]+(?=[0-9])|[0-9]+(?=[a-z]))[a-z0-9]+$/ (3) /^[0-9a-zA-Z]+$/ 解决方案二: ^(?=.*[0-

php正则表达式如何匹配在竖线之间的文字或者字符

问题描述 php正则表达式如何匹配在竖线之间的文字或者字符 我相匹配 Z10004|王|億达峰|52|66| 这个字符串的|中间的那些字串或者文字 解决方案 $s = 'Z10004|王|億达峰|52|66|'; //假定为 utf-8 编码,否则需要转码preg_match_all('/(?<=|)w+(?<!$)/u' $s $m); 解决方案二: 解决掉了,我是先将这个字符串转换成utf-8的编码,然后将里面的'|'替换成其他的字符(如','),然后在用explode函数就不会出错了 解

js-输入值与正则表达式不匹配

问题描述 输入值与正则表达式不匹配 var reg=new RegExp("^[^wu4e00-u9fa5]{2,4}$"); alert(reg.test(nvalue)); 当输入的为"张三" 时,alert显示的值是false 为什么匹配不上? 解决方案 [^wu4e00-u9fa5],去掉[里面的^,你加^就是排除这些字符了 var reg = new RegExp("^[wu4e00-u9fa5]{2,4}$"); alert(reg.

Javascript中使用exec进行正则表达式全局匹配时的注意事项_正则表达式

本文就是介绍在使用 Javascript 中使用 exec 进行正则表达式全局匹配时的注意事项. 先看一下常见的用法: 复制代码 代码如下: <script type="text/javascript"> var pattern = /http:\/\/([^\/\s]+)/; alert(pattern.exec('http://www.codebit.cn')); // http://www.codebit.cn,www.codebit.cn alert(pattern

iOS App开发中Objective-C使用正则表达式进行匹配的方法_IOS

iOS中有三种方式来实现正则表达式的匹配.现在将他们都记录在这里: 1.利用NSPredicate(谓词)匹配 例如匹配有效邮箱: NSString *email = @"nijino_saki@163.com": NSString *regex = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"; NSPredicate *predicate = [NSPredicate predicateWithForma

求一个java中正则表达式,匹配所有标点符号,但除去‘-’和‘_’的

问题描述 求一个java中正则表达式,匹配所有标点符号,但除去'-'和'_'的 解决方案 可以使用正则表达式:(?=\pP)[^-_]测试:String ss = "测试test.df/:'-_";System.out.println(ss.replaceAll("(?=\pP)[^-_]", ""));输出:测试testdf-_解释:(1)前面部分(?=\pP)是个顺序环视正则表达式,只匹配位置不占用字符,匹配的位置是一个标点符号.(2)匹配到

正则表达式,匹配的,不理解

问题描述 正则表达式,匹配的,不理解 {1=A, 2=B, 3=C, 4=D}, {3=E, 4=F, 5=G, 6=H, 7=K}, {4=F, 5=G, 6=H, 7=K} 想split成如下. 1=A, 2=B, 3=C, 4=D 3=E, 4=F, 5=G, 6=H, 7=K 4=F, 5=G, 6=H, 7=K split("},s[{]");这样就可以 发现"},s{"这样怎么就不行呢. 解决方案 "},s[{]":空白正则是s,你放

正则表达式 c#-c# 中关于正则表达式的匹配问题,跪求解答

问题描述 c# 中关于正则表达式的匹配问题,跪求解答 我有一个字符串全新通信设备,现货低价出售:中兴 9800 ASNV+PNVNA 3套MSAG5200 ALCH 60块 GADL 20块C220含机柜(2000*600*600)4套 现在想用正则表达式匹配出:9800,asnv+pnvna,msag5200 alch ,gadl,c220 这些数字加英文的这些关键字请问怎么写正则表达式来截取呢?

匹配对象的属性和函数-请高手指教下,C#里面正则表达式如何匹配对象的属性和嵌套的函数

问题描述 请高手指教下,C#里面正则表达式如何匹配对象的属性和嵌套的函数 'M.smith pass :'+stu.count(iif(sc.avg(sc.getscore()) >60,1,0))+teacher.class 需要匹配出 1.sc,getscore() 2.stu,count(iif(sc.avg(sc.getscore()) >60,1,0)) 3.teacher.class 不需要比配单引号里面的 M.smith 解决方案 1.sc{1},getscore(){1} 2.

请高手指教下,C#正则表达式如何匹配对象的属性和嵌套的函数

问题描述 请高手指教下,C#正则表达式如何匹配字符串里面的对象的属性和嵌套的函数,对象的函数.属性名不确定.字符串如下"'M.smithpass:'+stu.count(iif(sc.avg(sc.getscore())>60,1,0))+teacher.class"需要匹配出1.sc,getscore()2.stu,count(iif(sc.avg(sc.getscore())>60,1,0))3.teacher.class不需要比配单引号里面的M.smith 解决方案