zoukankan      html  css  js  c++  java
  • Delphi 正则表达式语法(8): 引用子表达式

    //准备: 我们先写一个搜索所有英文单词的表达式
    var
      reg: TPerlRegEx;
    begin
      reg := TPerlRegEx.Create(nil);
    
      reg.Subject := 'one two three four five six seven eight nine ten';
      reg.RegEx   := '[A-Za-z]+'; //这个表达式就可以找到所有的英文单词
      reg.Replacement := '◆';
      reg.ReplaceAll;
    
      ShowMessage(reg.Subject); //返回: ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆ ◆
    
      FreeAndNil(reg);
    end;

    //假如我们只需要每个单词的第一个字母呢? 这要用到子表达式
    var
      reg: TPerlRegEx;
    begin
      reg := TPerlRegEx.Create(nil);
    
      reg.Subject := 'one two three four five six seven eight nine ten';
      reg.RegEx   := '([A-Za-z])[A-Za-z]*'; //注意表达式中有子表达式, 在 () 中
      reg.Replacement := '1'; // 1 引用了第一个子表达式
      reg.ReplaceAll;
    
      ShowMessage(reg.Subject); //返回: o t t f f s s e n t
    
      FreeAndNil(reg);
    end;

    //表达式中可以有多个子表达式
    var
      reg: TPerlRegEx;
    begin
      reg := TPerlRegEx.Create(nil);
    
      reg.Subject := 'one two three ten';
      reg.RegEx   := '(t)(w+)';
      reg.Replacement := '[1-2:]'; // 12 分别引用对应的子表达式;  引用整个表达式
      reg.ReplaceAll;
    
      ShowMessage(reg.Subject); //返回: one [t-wo:two] [t-hree:three] [t-en:ten]
    
      FreeAndNil(reg);
    end;

    //在后面介绍 TPerlRegEx 类的方法时, 关于对 (子表达式) 的引用还有更多话题.
  • 相关阅读:
    数据结构和算法大纲
    内存碎片产生原因及处理技术
    相关资源
    busybox hexdump 命令使用
    http协议中content-length 以及chunked编码分析
    libtool工具的使用
    音视频学习相关资源
    winpcap
    ipkg包管理
    system返回值校验
  • 原文地址:https://www.cnblogs.com/honeynm/p/4058711.html
Copyright © 2011-2022 走看看