zoukankan      html  css  js  c++  java
  • Delphi 正则表达式语法(2): 或者与重复

    // | 号的使用, | 是或者的意思
    var
      reg: TPerlRegEx;
    begin
      reg := TPerlRegEx.Create(nil);
    
      reg.Subject := 'CodeGear Delphi 2007';
      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 := 'a aa aaa aaaa ab abb abbba a呀a';
      reg.RegEx   := 'ab+'; //使用了 + 记号, 这里是允许 a 后面有 1 个或多个 b
      reg.Replacement := '◆';
      reg.ReplaceAll;
    
      ShowMessage(reg.Subject); //返回: a aa aaa aaaa ◆ ◆ ◆a a呀a
    
      FreeAndNil(reg);
    end;

    // * 的使用, * 是重复 0 个或多个
    var
      reg: TPerlRegEx;
    begin
      reg := TPerlRegEx.Create(nil);
    
      reg.Subject := 'a aa aaa aaaa ab abb abbba a呀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 := 'a aa aaa aaaa ab abb abbba a呀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 := 'a aa aaa aaaa ab abb abbba a呀a';
      reg.RegEx   := 'a{3}'; //这里指定重复 3 次
      reg.Replacement := '◆';
      reg.ReplaceAll;
    
      ShowMessage(reg.Subject); //返回: a aa ◆ ◆a ab abb abbba a呀a
    
      FreeAndNil(reg);
    end;

    //大括号的使用<2>
    var
      reg: TPerlRegEx;
    begin
      reg := TPerlRegEx.Create(nil);
    
      reg.Subject := 'a aa aaa aaaa ab abb abbba a呀a';
      reg.RegEx   := 'a{2,4}'; //这里指定重复 2-4 次
      reg.Replacement := '◆';
      reg.ReplaceAll;
    
      ShowMessage(reg.Subject); //返回: a ◆ ◆ ◆ ab abb abbba a呀a
    
      FreeAndNil(reg);
    end;

    //大括号的使用<3>
    var
      reg: TPerlRegEx;
    begin
      reg := TPerlRegEx.Create(nil);
    
      reg.Subject := 'a aa aaa aaaa ab abb abbba a呀a';
      reg.RegEx   := 'a{1,}'; //n 个或多个, 这里是 1 个或多个
      reg.Replacement := '◆';
      reg.ReplaceAll;
    
      ShowMessage(reg.Subject); //返回: ◆ ◆ ◆ ◆ ◆b ◆bb ◆bbb◆ ◆呀◆
    
      FreeAndNil(reg);
    end;
    
    //上面这个 {1,} 和 + 是等效的;
    //还有 {0,1} 与 ? 是等效的;
    //{0,} 和 * 是等效的
  • 相关阅读:
    Max History CodeForces
    Buy a Ticket CodeForces
    AC日记——字符串的展开 openjudge 1.7 35
    AC日记——回文子串 openjudge 1.7 34
    AC日记——判断字符串是否为回文 openjudge 1.7 33
    AC日记——行程长度编码 openjudge 1.7 32
    AC日记——字符串P型编码 openjudge 1.7 31
    AC日记——字符环 openjudge 1.7 30
    AC日记——ISBN号码 openjudge 1.7 29
    AC日记——单词倒排 1.7 28
  • 原文地址:https://www.cnblogs.com/honeynm/p/4058660.html
Copyright © 2011-2022 走看看