网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
Delphi正则表达式
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式

 DELPHi中的REGEXPR 

 其实这个Pascal单元我在几个论坛上面都推荐过,也是我唯一会用的DELPHI下面的正则表达式实现。正则表达式是个极其繁琐和强大的东西,小生才疏学浅,也不准备写正则表达式的教程,借着对这个单元的介绍,会有一些浅显且有用的例子。首先介绍的是这个单元的主角:TRegExpr类,这个类包括很多成员,这里仅简单的介绍一下一般匹配的过程。下面是一段在文本中提取邮件地址的代码: Procedure GetName(TextToCheck:String;aList:TStringList);VarmyExpr: TRegExpr;beginmyExpr := TRegExpr.Create;TrymyExpr.Expression := ''name="(.*?)"'';if myExpr.Exec(TextToCheck) thenrepeataList.Add(myExpr.Match);until not MyExpr.ExecNext;finallymyExpr.Free;end;end; 下面对这段代码进行一点简要的说明.首先是myExpr.Expression := ''name="(.*?)"'';这个语句用以匹配name="XXXXX"形式的字符串。“.*?”是很常见的一段,表示对任意字符串的“非贪婪匹配”,代表符合匹配条件的最短字符串,关于贪婪非贪婪的问题,会在后面说明。括号表示对这段文字的引用,匹配中出现符合该模式的字符串将会存储在TRegExpr的Match数组中。接下来是if myExpr.Exec(TextToChceck)这一句,这一语句就是开始利用上文提到的正则表达式对TextToCheck进行匹配。Exec方法有三个重载:function Exec (const AInputString : AnsiString) : boolean; //对AInputString参数进行匹配function Exec : boolean; overload; //对InputString成员进行匹配function Exec (AOffset: integer) : boolean; overload; //对InputString成员,从AOffset位置开始进行匹配该方法返回一个布尔型的值,如果为真,则表明InputString中包含表达式所匹配的模式,例如''Name="Hello.Gif"''作为参数,就会返回True。 接下来的语句中出现的myExpr.Match,则用以取出本次匹配结果 最后的ExecNext其实是使用了上面提到的第三个重载,用来对重复出现的字符串进行连续匹配,返回结果的含义同Exec相同 接下来谈谈Match成员,其中Match[0]表示整个表达式的匹配结果,之后的数组元素则代表括号中的匹配结果,元素编号按照括号从左到右的顺序递增,嵌套括号则以从内向外的顺序递增。例如一个简单的对E-Mail地址的匹配:Quotes From ???输入字符串:''"dirt@sina.com","v@d2g.com"''正则表达式:''"((.*?)@(.*?))",''执行结果如下:0 "dirt@sina.com",1 dirt@sina.com2 dirt3 sina.com从中即可看出Match数组中的结果排列顺序。  而上文中出现的.*?经常用于不很严谨的场合,例如前面用到的邮件地址提取,有人就写出几百字符的的验证表达式。其中“.”表示任意单个字符,“*” 表示前面的字符(串)至少出现一次,而''?''在这里就是非贪婪限定符,举一个简单的例子:"aaa""bbb",这样一个字符串,如果用''" (.*?)"''进行匹配,则Match的内容就是''aaa'',如果去掉了其中的''?'',则Match就变成了''aaa""bbb'',这就可以 看出贪婪和非贪婪的区别。 一个基本的匹配过程就到这里,有空会再继续写一些其他的相关内容,敬请丢砖 转自:http://www.delphibbs.com/keylife/iblog_show.asp?xid=13902作者:coolbaby TRegExpr是正则表达式在delphi中的一个很好的实现。是一个单独的单元,使用时直接引用即可。还自带了几个sample。 对其中的SelfTest例子加了几行注释如下:{ basic tests } r := TRegExpr.Create; r.Expression :=

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号