正则表达式的用法(PerlRegEx)
-------------------------------------------------------------------------------------------
在 Delphi 中使用正则表达式, 目前 PerlRegEx 应该是首选, 准备彻底而细致地研究它.
官方网站: http://www.regular-expressions.info/delphi.html
直接下载: http://www.regular-expressions.info/download/TPerlRegEx.zip
安装方法:
1、先把解压的 TPerlRegEx 文件夹放一个合适的地方, 我放在了 Delphi 的 Imports 目录中.
2、目前最新 For Win32 的版本是对 Delphi 2006 的, 2007 也能用.
打开 PerlRegExD2006.dpk, 提示缺少资源文件, 没关系;
在 Project Manager 窗口中的 PerlRegExD2006.bpl 上点击右键, 执行 Install;
这时在 Tool Palette 的列表中已经有了 TPerlRegEx, 在 JGsoft 组.
3、Tools -> Options -> Environment Options -> Delphi Options -> Library-Win32 -> Library path ->
添加路径: ...\Imports\TPerlRegEx
4、可以使用了! 直接 uses PerlRegEx 或从 Tool Palette 添加都可以.
如果不喜欢 Tool Palette 的添加方式可以省略第二步.
计划的学习步骤: 1、正则语法; 2、TPerlRegEx 功能.
字符替换
//先测试一下: uses PerlRegEx; //uses 正则表达式单元 procedure TForm1.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;
字串的绝对匹配用法
procedure TForm1.Button1Click(Sender: TObject);
begin
with PerlRegEx1 do begin
RegEx:=Edit1.Text;
Subject:=Edit2.Text; //匹配属生的RegEx与Subject
if Match then ShowMessage('Match') else ShowMessage('Not Match');
end;
end;
字串替换的用法
------------------------
with PerlRegEx1 do begin
Subject := 'Bill loves Hillary';
RegEx := 'Hillary';
Replacement := 'Monica';
if Match then Replace;
ShowMessage(Subject); // "Bill loves Monica"
end;
-------------------------------------------------
任意匹配
----------------
with PerlRegEx1 do begin
Subject:='linux';
RegEx := 'Windows|Linux'; // Matches 'Windows' or 'Linux', whichever comes first
if Match then Label1.Caption := MatchedExpression + ' rulez!';
end;
-------------------
Option->CaseLess->True->不区分大小写,否则区分大小写
_____________________________________________________
字符匹配
-------------
with PerlRegEx1 do begin
Subject := 'Rating: AAA';
RegEx := 'A+'; // Matches the first occurence of 'A', including any A's that may follow right after it
if Match then Label1.Caption :=
'You have been rated with ' + IntToStr(MatchedExpressionLength) + 'A''s'
else
Label1.Caption := 'You have a poor rating';
end;
只要出现A就匹配成功!
______________________________
取得匹配字串前面的字串,当也可以取得后面的字串
----------------------------------
with PerlRegEx1 do begin
Subject:='HaHa Bye Hei Hei';
RegEx := 'Bye';
if Match then Label1.Caption := 'Before typing "Bye", you typed: ' +
Copy(Subject, 1, MatchedExpressionOffset-1);
end;
--------------------------------
第一个字符为大写的匹配方式
---------------------------------
with PerlRegEx1 do begin
Subject := 'I like to hang out at Foo bar';
RegEx := '([A-Za-z]+) bar';//([A-Za-z]+) 这个表示第一个字符大写,后面不管
Replacement := ' \1 is the name of the bar I like';
if Match then Replace;
ShowMessage(Subject);
end;
分裂字串(把一个字串按指定分隔号裂开)
---------------------------------加如文本------
One,Two,Three,Four
你, 我, 他
你们, 我们, 他们
----------------------------------------------
procedure TForm1.Button2Click(Sender: TObject);
begin
PerlRegEx1.Subject:=Memo1.Lines.GetText;
PerlRegEx1.RegEx:=',';
PerlRegEx1.Split(Memo2.Lines,0);
end;
-----裂开后,每个子字串都占一行-------------
One
Two
Three
Four
你
我
他
你们
我们
他们
----------代码如下-----------------
begin
PerlRegEx1.Subject:=Memo1.Lines.GetText;
PerlRegEx1.RegEx:=',';
PerlRegEx1.Split(Memo2.Lines,0);//0表示源字串中的所有子字串
end;
----------------------------------
这个功能在做文本数据库时最好用->把文本裂开后存入数据表中
posted on 2008-06-14 02:45 DoubleCat 阅读(1235) 评论(0) 编辑 收藏 举报