首页 / 软件开发 / Delphi / Delphi中正则表达式语法(2) 或者与重复
Delphi中正则表达式语法(2) 或者与重复2012-12-20 万一 // | 号的使用, | 是或者的意思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,} 和 * 是等效的