码迷,mamicode.com
首页 > Windows程序 > 详细

Delphi 正则表达式语法(8): 引用子表达式 - 也叫反向引用

时间:2014-10-29 10:40:43      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   ar   sp   strong   div   

//准备: 我们先写一个搜索所有英文单词的表达式
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): 引用子表达式 - 也叫反向引用

标签:style   blog   http   color   os   ar   sp   strong   div   

原文地址:http://www.cnblogs.com/honeynm/p/4058711.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!