Delphi 正则表达式 与 TPerlRegEx.docx

上传人:b****5 文档编号:7685659 上传时间:2023-01-25 格式:DOCX 页数:12 大小:17.96KB
下载 相关 举报
Delphi 正则表达式 与 TPerlRegEx.docx_第1页
第1页 / 共12页
Delphi 正则表达式 与 TPerlRegEx.docx_第2页
第2页 / 共12页
Delphi 正则表达式 与 TPerlRegEx.docx_第3页
第3页 / 共12页
Delphi 正则表达式 与 TPerlRegEx.docx_第4页
第4页 / 共12页
Delphi 正则表达式 与 TPerlRegEx.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

Delphi 正则表达式 与 TPerlRegEx.docx

《Delphi 正则表达式 与 TPerlRegEx.docx》由会员分享,可在线阅读,更多相关《Delphi 正则表达式 与 TPerlRegEx.docx(12页珍藏版)》请在冰豆网上搜索。

Delphi 正则表达式 与 TPerlRegEx.docx

Delphi正则表达式与TPerlRegEx

在Delphi中使用正则表达式,目前PerlRegEx应该是首选

直接下载:

http:

//www.regular-expressions.info/download/TPerlRegEx.zip

安装方法:

1、先把解压的TPerlRegEx里面的文件和PCRE里面的文件统统放在Delphi的Lib目录中.

2、然后再Delphi中Component-->Installcomponent--->在unitfilename中找到PerRegEx.pas(packagefilename就按照默认的dclusr.dpk即可)安装。

再用同样的方法安装pcre.pas.

  OK~!

安装完毕,在组件条最后已经出现了JGSoft按钮,安装成功。

(youcancreateanewpackageoraddthecomponenttoanexistingpackage.SimplyaddthefilesPerlRegEx.pasandpcre.pastothepackage.)

计划的学习步骤:

1、正则语法;2、TPerlRegEx功能.

//准备用这段简单的代码测试语法:

uses

PerlRegEx;//uses正则表达式单元

procedureTForm1.FormCreate(Sender:

TObject);

var

reg:

TPerlRegEx;//声明正则表达式变量

begin

reg:

=TPerlRegEx.Create(nil);//建立

reg.Subject:

='sSsS';   //这是要替换的源字符串

reg.RegEx  :

='s';      //这是表达式,在这里是准备替换掉的子串

reg.Replacement:

='◆';//要替换成的新串

reg.ReplaceAll;          //执行全部替换

ShowMessage(reg.Subject);//返回替换结果:

◆S◆S

FreeAndNil(reg);//因为建立时属主给了nil,这里没有使用reg.Free

end;

Delphi正则表达式语法

(1):

关于大小写与中文

           

//替换一般字符串

           var

           reg:

TPerlRegEx;

           begin

           reg:

=TPerlRegEx.Create(nil);

           reg.Subject:

='我爱DELPHI,但Delphi不爱我!

';

           reg.RegEx  :

='Delphi';

           reg.Replacement:

='◆';

           reg.ReplaceAll;

           ShowMessage(reg.Subject);//返回:

我爱DELPHI,但◆不爱我!

           

           FreeAndNil(reg);

           end;

           

           //不区分大小写

           var

           reg:

TPerlRegEx;

           begin

           reg:

=TPerlRegEx.Create(nil);

           reg.Subject:

='我爱DELPHI,但Delphi不爱我!

';

           reg.RegEx  :

='Delphi';

           reg.Replacement:

='◆';

           reg.Options:

=[preCaseLess];//不区分大小的设定,默认是区分的

             reg.ReplaceAll;

           ShowMessage(reg.Subject);//返回:

我爱◆,但◆不爱我!

           

           FreeAndNil(reg);

           end;

           

           //试试中文替换

           var

           reg:

TPerlRegEx;

           begin

           reg:

=TPerlRegEx.Create(nil);

           reg.Subject:

='我爱DELPHI,但Delphi不爱我!

';

           reg.RegEx  :

='我';

           reg.Replacement:

='◆';

           reg.ReplaceAll;

           ShowMessage(reg.Subject);//返回:

◆爱DELPHI,但Delphi不爱◆!

           

           FreeAndNil(reg);

           end;

           

           //如果不区分大小写,竟然也不区分中文字了

           var

           reg:

TPerlRegEx;

           begin

           reg:

=TPerlRegEx.Create(nil);

           reg.Subject:

='我爱DELPHI,但Delphi不爱我!

';

           reg.RegEx  :

='我';

           reg.Replacement:

='◆';

           reg.Options:

=[preCaseLess];//也设定不区分大小

             reg.ReplaceAll;

           ShowMessage(reg.Subject);//返回:

◆◆DELPHI,◆Delphi◆◆◆!

           

           FreeAndNil(reg);

           end;

           //我测试了不同的汉字,除了乱以外,没有规律;所有如果操作汉字暂时不要指定preCaseLess

           

           

Delphi正则表达式语法

(2):

或者与重复

           

//|号的使用,|是或者的意思

           var

           reg:

TPerlRegEx;

           begin

           reg:

=TPerlRegEx.Create(nil);

           reg.Subject:

='CodeGearDelphi2007';

           reg.RegEx  :

='e|Delphi|0';//使用了|记号

             reg.Replacement:

='◆';

           reg.ReplaceAll;

           ShowMessage(reg.Subject);//返回:

Cod◆G◆ar◆2◆◆7

           

           FreeAndNil(reg);

           end;

           

           //+的使用,+是重复1个或多个

           var

           reg:

TPerlRegEx;

           begin

           reg:

=TPerlRegEx.Create(nil);

           reg.Subject:

='aaaaaaaaaaababbabbbaa呀a';

           reg.RegEx  :

='ab+';//使用了+记号,这里是允许a后面有1个或多个b

             reg.Replacement:

='◆';

           reg.ReplaceAll;

           ShowMessage(reg.Subject);//返回:

aaaaaaaaaa◆◆◆aa呀a

           

           FreeAndNil(reg);

           end;

           

           //*的使用,*是重复0个或多个

           var

           reg:

TPerlRegEx;

           begin

           reg:

=TPerlRegEx.Create(nil);

           reg.Subject:

='aaaaaaaaaaababbabbbaa呀a';

           reg.RegEx  :

='ab*';//使用了*记号,这里是允许a后面有多个或者没有b

             reg.Replacement:

='◆';

           reg.ReplaceAll;

           ShowMessage(reg.Subject);//返回:

◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆呀◆

           

           FreeAndNil(reg);

           end;

           

           //?

的使用,?

是重复0个或1个

           var

           reg:

TPerlRegEx;

           begin

           reg:

=TPerlRegEx.Create(nil);

           reg.Subject:

='aaaaaaaaaaababbabbbaa呀a';

           reg.RegEx  :

='a?

';//使用了?

记号

             reg.Replacement:

='◆';

           reg.ReplaceAll;

           ShowMessage(reg.Subject);//返回:

◆◆◆◆◆◆◆◆◆◆◆b◆bb◆bbb◆◆呀◆

           

           FreeAndNil(reg);

           end;

           

           //大括号的使用<1>,指定重复数

           var

           reg:

TPerlRegEx;

           begin

           reg:

=TPerlRegEx.Create(nil);

           reg.Subject:

='aaaaaaaaaaababbabbbaa呀a';

           reg.RegEx  :

='a{3}';//这里指定重复3次

             reg.Replacement:

='◆';

           reg.ReplaceAll;

           ShowMessage(reg.Subject);//返回:

aaa◆◆aababbabbbaa呀a

           

           FreeAndNil(reg);

           end;

           

           //大括号的使用<2>

           var

           reg:

TPerlRegEx;

           begin

           reg:

=TPerlRegEx.Create(nil);

           reg.Subject:

='aaaaaaaaaaababbabbbaa呀a';

           reg.RegEx  :

='a{2,4}';//这里指定重复2-4次

             reg.Replacement:

='◆';

           reg.ReplaceAll;

           ShowMessage(reg.Subject);//返回:

a◆◆◆ababbabbbaa呀a

           

           FreeAndNil(reg);

           end;

           

           //大括号的使用<3>

           var

           reg:

TPerlRegEx;

           begin

           reg:

=TPerlRegEx.Create(nil);

           reg.Subject:

='aaaaaaaaaaababbabbbaa呀a';

           reg.RegEx  :

='a{1,}';//n个或多个,这里是1个或多个

             reg.Replacement:

='◆';

           reg.ReplaceAll;

           ShowMessage(reg.Subject);//返回:

◆◆◆◆◆b◆bb◆bbb◆◆呀◆

           

           FreeAndNil(reg);

           end;

           //上面这个{1,}和+是等效的;

           //还有{0,1}与?

是等效的;

           //{0,}和*是等效的

           

Delphi正则表达式语法(3):

匹配范围

//[A-Z]:

匹配所有大写字母

var

reg:

TPerlRegEx;

begin

reg:

=TPerlRegEx.Create(nil);

reg.Subject:

='CodeGearDelphi2007forWin32';

reg.RegEx  :

='[A-Z]';

reg.Replacement:

='◆';

reg.ReplaceAll;

ShowMessage(reg.Subject);//返回:

◆ode◆ear◆elphi2007for◆in32

FreeAndNil(reg);

end;

//[a-z]:

匹配所有小写字母

var

reg:

TPerlRegEx;

begin

reg:

=TPerlRegEx.Create(nil);

reg.Subject:

='CodeGearDelphi2007forWin32';

reg.RegEx  :

='[a-z]';

reg.Replacement:

='◆';

reg.ReplaceAll;

ShowMessage(reg.Subject);//返回:

C◆◆◆G◆◆◆D◆◆◆◆◆2007◆◆◆W◆◆32

FreeAndNil(reg);

end;

//[0-9]:

匹配所有数字

var

reg:

TPerlRegEx;

begin

reg:

=TPerlRegEx.Create(nil);

reg.Subject:

='CodeGearDelphi2007forWin32';

reg.RegEx  :

='[0-9]';

reg.Replacement:

='◆';

reg.ReplaceAll;

ShowMessage(reg.Subject);//返回:

CodeGearDelphi◆◆◆◆forWin◆◆

FreeAndNil(reg);

end;

//匹配几个范围

var

reg:

TPerlRegEx;

begin

reg:

=TPerlRegEx.Create(nil);

reg.Subject:

='CodeGearDelphi2007forWin32';

reg.RegEx  :

='[C-Do-p0-2]';//大写字母:

C-D;小写字母:

o-p;数字:

0-2

reg.Replacement:

='◆';

reg.ReplaceAll;

ShowMessage(reg.Subject);//返回:

◆◆deGear◆el◆hi◆◆◆7f◆rWin3◆

FreeAndNil(reg);

end;

//匹配[]中的所有

var

reg:

TPerlRegEx;

begin

reg:

=TPerlRegEx.Create(nil);

reg.Subject:

='CodeGearDelphi2007forWin32';

reg.RegEx  :

='[Ci2]';//大写字母:

C;小写字母:

i;数字:

2

reg.Replacement:

='◆';

reg.ReplaceAll;

ShowMessage(reg.Subject);//返回:

◆odeGearDelph◆◆007forW◆n3◆

FreeAndNil(reg);

end;

//^排除[]中的所有

var

reg:

TPerlRegEx;

begin

reg:

=TPerlRegEx.Create(nil);

reg.Subject:

='CodeGearDelphi2007forWin32';

reg.RegEx  :

='[^Ci0-2]';//这里排除了大写字母:

C;小写字母:

i;数字:

0-2

reg.Replacement:

='◆';

reg.ReplaceAll;

ShowMessage(reg.Subject);//返回:

C◆◆◆◆◆◆◆◆◆◆◆◆◆i◆200◆◆◆◆◆◆◆i◆◆2

FreeAndNil(reg);

end;

           

           

Delphi正则表达式语法(4):

常用转义字符与.

           

           

//\d匹配所有数字,相当于[0-9]

           var

           reg:

TPerlRegEx;

           begin

           reg:

=TPerlRegEx.Create(nil);

           reg.Subject:

='期待Delphi2008forWin32!

';

           reg.RegEx  :

='\d';

           reg.Replacement:

='◆';

           reg.ReplaceAll;

           ShowMessage(reg.Subject);//返回:

期待Delphi◆◆◆◆forWin◆◆!

           

           FreeAndNil(reg);

           end;

           

           //\D匹配所有非数字,相当于[^0-9]

           var

           reg:

TPerlRegEx;

           begin

           reg:

=TPerlRegEx.Create(nil);

           reg.Subject:

='期待Delphi2008forWin32!

';

           reg.RegEx  :

='\D';

           reg.Replacement:

='◆';

           reg.ReplaceAll;

           ShowMessage(reg.Subject);//返回:

◆◆◆◆◆◆◆◆◆◆◆2008◆◆◆◆◆◆◆◆32◆◆

           

           FreeAndNil(reg);

           end;

           

           //\w匹配字母、数字与下划线_,相当于[A-Za-z0-9_]

           var

           reg:

TPerlRegEx;

           begin

           reg:

=TPerlRegEx.Create(nil);

           reg.Subject:

='期待Delphi2008forWin32!

';

           reg.RegEx  :

='\w';

           reg.Replacement:

='◆';

           reg.ReplaceAll;

           ShowMessage(reg.Subject);//返回:

期待◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆!

           

           FreeAndNil(reg);

           end;

           

           //\W匹配非字母、数字与下划线_,相当于[^A-Za-z0-9_]

           var

           reg:

TPerlRegEx;

           begin

           reg:

=TPerlRegEx.Create(nil);

           reg.Subject:

='期待Delphi2008forWin32!

';

           reg.RegEx  :

='\W';

           reg.Replacement:

='◆';

           reg.ReplaceAll;

           ShowMessage(reg.Subject);//返回:

期待◆◆◆◆◆◆◆◆◆◆

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1