正则表达式(转自http:blogold.chinaunix.netu941showart

    技术2026-09-11  16

    正则表达式的用法(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 功能. 字符替换

     

    //先测试一下:usesPerlRegEx; //uses 正则表达式单元procedure TForm1.FormCreate(Sender: TObject);varreg: TPerlRegEx; //声明正则表达式变量beginreg := TPerlRegEx.Create(nil); //建立reg.Subject := 'sSsS'; //这是要替换的源字符串 reg.RegEx := 's'; //这是表达式, 在这里是准备替换掉的子串 reg.Replacement := '◆'; //要替换成的新串 reg.ReplaceAll; //执行全部替换ShowMessage(reg.Subject); //返回替换结果: ◆S◆SFreeAndNil(reg); //因为建立时属主给了 nil, 这里没有使用 reg.Freeend;

    字串的绝对匹配用法

     


     

    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; -----裂开后,每个子字串都占一行------------- OneTwoThreeFour你 我 他你们 我们 他们 ----------代码如下----------------- begin  PerlRegEx1.Subject:=Memo1.Lines.GetText;  PerlRegEx1.RegEx:=',';  PerlRegEx1.Split(Memo2.Lines,0);//0表示源字串中的所有子字串end; ---------------------------------- 这个功能在做文本数据库时最好用->把文本裂开后存入数据表中

     

     

    --本文转自月夜我飞翔的博客:http://blogold.chinaunix.net/u/941/showart_1742800.html

    最新回复(0)