//准备: 我们先写一个搜索所有英文单词的表达式
var
  reg: TPerlRegEx;
begin
  reg := TPerlRegEx.Create(nil);   reg.Subject := 'one two three four five six seven eight nine ten';
  reg.RegEx  := '\b[A-Za-z]+\b'; //这个表达式就可以找到所有的英文单词
  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  := '\b([A-Za-z])[A-Za-z]*\b'; //注意表达式中有子表达式, 在 () 中
  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:\0]'; // \1\2 分别引用对应的子表达式; \0 引用整个表达式
  reg.ReplaceAll;   ShowMessage(reg.Subject); //返回: one [t-wo:two] [t-hree:three] [t-en:ten]   FreeAndNil(reg);
end;

//在后面介绍 TPerlRegEx 类的方法时, 关于对 (子表达式) 的引用还有更多话题.

Delphi 正则表达式语法(8): 引用子表达式 - 也叫反向引用的更多相关文章

  1. Delphi 正则表达式语法(9): 临界匹配 - 也叫"预搜索"与"反向预搜索"

    Delphi 正则表达式语法(9): 临界匹配 - 也叫"预搜索"与"反向预搜索" //匹配右边 var   reg: TPerlRegEx; begin   ...

  2. Delphi 正则表达式语法(7): 匹配转义字符

    Delphi 正则表达式语法(7): 匹配转义字符 // ? 号的意义是匹配 0-1 次, 如果需要匹配 ? 怎么办 var   reg: TPerlRegEx; begin   reg := TPe ...

  3. Delphi 正则表达式语法(10): 选项

    Delphi 正则表达式语法(10): 选项 // preCaseLess: 不区分大小写, 相当于其他语言中的 i var   reg: TPerlRegEx; begin   reg := TPe ...

  4. Delphi 正则表达式语法(6): 贪婪匹配与非贪婪匹配

    Delphi 正则表达式语法(6): 贪婪匹配与非贪婪匹配 //贪婪匹配 var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil);   ...

  5. Delphi 正则表达式语法(5): 边界

    Delphi 正则表达式语法(5): 边界 // \b 单词边界 var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil);   reg ...

  6. Delphi 正则表达式语法(4): 常用转义字符与 .

    Delphi 正则表达式语法(4): 常用转义字符与 . // \d 匹配所有数字, 相当于 [0-9] var   reg: TPerlRegEx; begin   reg := TPerlRegE ...

  7. Delphi 正则表达式语法(3): 匹配范围

    Delphi 正则表达式语法(3): 匹配范围 // [A-Z]: 匹配所有大写字母 var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(n ...

  8. Delphi 正则表达式语法(2): 或者与重复

    Delphi 正则表达式语法(2): 或者与重复 // | 号的使用, | 是或者的意思 var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create ...

  9. Delphi 正则表达式语法(1): 关于大小写与中文

    Delphi 正则表达式语法(1): 关于大小写与中文 //替换一般字符串 var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil); ...

随机推荐

  1. Visual Studio中“后期生成事件命令行” 中使用XCopy命令

    将程序所依赖的动态库与其他依赖文件做了分类,使用XCopy命令自动生成相应的目录结构. set source="$(TargetDir)" set output="$(S ...

  2. Mysql8.0.16 only_full_group_by

    [1]Mysql8.0.16 关于only_full_group_by问题 应公司业务的需求,安装了Mysql8.0.16版本,原来在Mysql5.6版本执行无恙的SQL语句: SELECT prod ...

  3. IOS 分节表视图

    分节表视图 简单的表视图仅仅有一个节,它实际上是分节表视图的一个特例.一个表能够有多个节,节也有头有脚,分节是加入索引和分组的前提. 索引的正确使用原则如所看到的: 1.索引标题不能与显示的标题全然一 ...

  4. db2 sql

    import from empty.del of replace into table_name

  5. Java逍遥游记读书笔记<二>

    Abstract抽象类 1.抽象类不能被实例化 2.抽象方法没有方法体 如: public abstract class Weapen { public abstract void attack(); ...

  6. jQery 操作CSS

    jQuery操作CSS也是很方便的,咱先看看这几个常用的方法: addClass():向一个元素添加一个或者多个类. removeClass():从一个元素中删除一个类或多个类. toggleClas ...

  7. CentOS 7安装与配置jdk-8u162

    一.下载jdk-8u162版本 jdk-8u162-linux-x64.rpm 二.上传jdk到centos下 上传完后的文件如下,文件只有读写权限,没有执行权限 使用如下命令授权,如果文件已经有了执 ...

  8. NHibernate 1.0 Released 版本发布了

    NHibernate is a port of Hibernate to the .NET platform. Hibernate is the leading open-source object- ...

  9. Webservice工作原理及实例

    Web Service工作原理及实例   一.Web Service基本概念   Web Service也叫XML Web Service WebService是一种可以接收从Internet或者In ...

  10. JavaScript学习笔记-Js操控HTML5 <progress> 标签

    Js操控----HTML5 <progress> 标签 简单模拟下下载进度跑条 <h4>加载进度</h4> <input type="button& ...