您的位置:首页 > 编程语言 > Delphi

Delphi 正则表达式语法(2): 或者与重复

2009-12-07 11:15 477 查看

www.u8686.com-信息发布平台

Delphi 正则表达式语法(2): 或者与重复

// | 号的使用, | 是或者的意思
var
reg: TPerlRegEx;
begin
reg := TPerlRegEx.Create(nil);

reg.Subject := 'CodeGear Delphi 2007';
reg.RegEx   := 'e|Delphi|0'; //使用了 | 记号
reg.Replacement := '◆';
reg.ReplaceAll;

ShowMessage(reg.Subject); //返回: Cod◆G◆ar ◆ 2◆◆7

FreeAndNil(reg);
end;

// + 的使用, + 是重复 1 个或多个
var
reg: TPerlRegEx;
begin
reg := TPerlRegEx.Create(nil);

reg.Subject := 'a aa aaa aaaa ab abb abbba a呀a';
reg.RegEx   := 'ab+'; //使用了 + 记号, 这里是允许 a 后面有 1 个或多个 b
reg.Replacement := '◆';
reg.ReplaceAll;

ShowMessage(reg.Subject); //返回: a aa aaa aaaa ◆ ◆ ◆a a呀a

FreeAndNil(reg);
end;

// * 的使用, * 是重复 0 个或多个
var
reg: TPerlRegEx;
begin
reg := TPerlRegEx.Create(nil);

reg.Subject := 'a aa aaa aaaa ab abb abbba a呀a';
reg.RegEx   := 'ab*'; //使用了 * 记号, 这里是允许 a 后面有多个或者没有 b
reg.Replacement := '◆';
reg.ReplaceAll;

ShowMessage(reg.Subject); //返回: ◆ ◆◆ ◆◆◆ ◆◆◆◆ ◆ ◆ ◆◆ ◆呀◆

FreeAndNil(reg);
end;

// ? 的使用, ? 是重复 0 个或 1 个
var
reg: TPerlRegEx;
begin
reg := TPerlRegEx.Create(nil);

reg.Subject := 'a aa aaa aaaa ab abb abbba a呀a';
reg.RegEx   := 'a?'; //使用了 ? 记号
reg.Replacement := '◆';
reg.ReplaceAll;

ShowMessage(reg.Subject); //返回: ◆ ◆◆ ◆◆◆ ◆◆◆◆ ◆b ◆bb ◆bbb◆ ◆呀◆

FreeAndNil(reg);
end;

//大括号的使用<1>, 指定重复数
var
reg: TPerlRegEx;
begin
reg := TPerlRegEx.Create(nil);

reg.Subject := 'a aa aaa aaaa ab abb abbba a呀a';
reg.RegEx   := 'a{3}'; //这里指定重复 3 次
reg.Replacement := '◆';
reg.ReplaceAll;

ShowMessage(reg.Subject); //返回: a aa ◆ ◆a ab abb abbba a呀a

FreeAndNil(reg);
end;

//大括号的使用<2>
var
reg: TPerlRegEx;
begin
reg := TPerlRegEx.Create(nil);

reg.Subject := 'a aa aaa aaaa ab abb abbba a呀a';
reg.RegEx   := 'a{2,4}'; //这里指定重复 2-4 次
reg.Replacement := '◆';
reg.ReplaceAll;

ShowMessage(reg.Subject); //返回: a ◆ ◆ ◆ ab abb abbba a呀a

FreeAndNil(reg);
end;

//大括号的使用<3>
var
reg: TPerlRegEx;
begin
reg := TPerlRegEx.Create(nil);

reg.Subject := 'a aa aaa aaaa ab abb abbba a呀a';
reg.RegEx   := 'a{1,}'; //n 个或多个, 这里是 1 个或多个
reg.Replacement := '◆';
reg.ReplaceAll;

ShowMessage(reg.Subject); //返回: ◆ ◆ ◆ ◆ ◆b ◆bb ◆bbb◆ ◆呀◆

FreeAndNil(reg);
end;

//上面这个 {1,} 和 + 是等效的;
//还有 {0,1} 与 ? 是等效的;
//{0,} 和 * 是等效的

[/code]

0
0
0
(请您对文章做出评价)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: