//准备: 我们先写一个搜索所有英文单词的表达式
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;
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;
本文通过实例演示如何使用正则表达式匹配英文单词,并利用子表达式实现对匹配结果的进一步处理,例如提取首字母或者替换指定部分。

被折叠的 条评论
为什么被折叠?



