Delphi 正则表达式语法(8): 引用子表达式 - 也叫反向引用
2014-10-29 10:02
260 查看
Delphi 正则表达式语法(8): 引用子表达式 - 也叫反向引用
//准备: 我们先写一个搜索所有英文单词的表达式 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): 引用子表达式 - 也叫反向引用
- Delphi 正则表达式语法(8): 引用子表达式 - 也叫反向引用
- Delphi 正则表达式语法(8): 引用子表达式 - 也叫反向引用
- Delphi 正则表达式语法(9): 临界匹配 - 也叫"预搜索"与"反向预搜索"
- [正则表达式]-基础语法五 反向引用与断言
- Delphi 正则表达式语法(9): 临界匹配 - 也叫"预搜索"与"反向预搜索"
- Delphi 正则表达式语法(9): 临界匹配 - 也叫"预搜索"与"反向预搜索"
- Delphi 正则表达式语法(9): 临界匹配 - 也叫"预搜索"与"反向预搜索"
- Delphi 正则表达式语法(2): 或者与重复
- Delphi 正则表达式语法
- Delphi 正则表达式语法(3): 匹配范围
- Delphi 正则表达式语法(1): 关于大小写与中文
- Delphi 正则表达式语法(5): 边界
- [引用] 各种工具之正则表达式语法比较
- Delphi 正则表达式语法(1): 关于大小写与中文
- js正则表达式的分组和反向引用
- Delphi 正则表达式语法(4): 常用转义字符与 .
- Delphi 正则表达式语法(4): 常用转义字符与 .
- Delphi 正则表达式语法(6): 贪婪匹配与非贪婪匹配
- [引用] 各种工具之正则表达式语法比较 (转载)