//准备: 我们先写一个搜索所有英文单词的表达式 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 类的方法时, 关于对 (子表达式) 的引用还有更多话题.