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,} 和 * 是等效的
  • 相关阅读:
    pyqt的常用知识点记录
    Ansys采用后处理list Rusult输出位移时负号原因导致不能分列的python解决方法
    matlab调用ANSYS进行分析
    Matlab采用load加载txt文件时显示:错误使用load,无法打开要输出的文件
    Matlab绘制单元,云图
    关于chol分解的置换向量的问题及正定对称稀疏矩阵的构造
    Pr中字幕模糊的问题
    Matlab中文乱码问题
    Qt信号与槽---基于vs2013+qt5
    Microsoft To Do-安卓-Windows-Mac
  • 原文地址:https://www.cnblogs.com/honeynm/p/4058660.html
Copyright © 2011-2022 走看看