Delphi中正则表达式语法(8) 引用子表达式 - 也叫反向引用2012-12-20 万一
//准备: 我们先写一个搜索所有英文单词的表达式varreg: TPerlRegEx;beginreg := 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; //假如我们只需要每个单词的第一个字母呢? 这要用到子表达式// www.bianceng.cnvarreg: TPerlRegEx;beginreg := 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; //表达式中可以有多个子表达式varreg: TPerlRegEx;beginreg := 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 类的方法时, 关于对 (子表达式) 的引用还有更多话题.