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

Delphi 正则表达式之TPerlRegEx 类的属性与方法(1): 查找

2010-11-02 17:39 639 查看
//查找是否存在
var
reg: TPerlRegEx;
begin
reg := TPerlRegEx.Create(nil);

reg.Subject := 'CodeGear Delphi 2007 for Win32';
reg.RegEx   := '\d';

if reg.Match then
ShowMessage('找到了')
else
ShowMessage('没找到');

FreeAndNil(reg);
end;
--------------------------------------------------------------------------------

//查找是否存在(方法2)
var
reg: TPerlRegEx;
begin
reg := TPerlRegEx.Create(nil);

reg.Subject := 'CodeGear Delphi 2007 for Win32';
reg.RegEx   := '\d';

reg.Match; //执行查找

if reg.FoundMatch then  //布尔变量 FoundMatch 会告诉我们查找有没有结果
ShowMessage('找到了')
else
ShowMessage('没找到');

FreeAndNil(reg);
end;
--------------------------------------------------------------------------------

//显示找到的第一个
var
reg: TPerlRegEx;
begin
reg := TPerlRegEx.Create(nil);

reg.Subject := 'CodeGear Delphi 2007 for Win32';
reg.RegEx   := '\d';

if reg.Match then
ShowMessage(reg.MatchedExpression)  //2
else
ShowMessage('没找到');

FreeAndNil(reg);
end;
--------------------------------------------------------------------------------

//分别显示找到的每一个和总数
var
reg: TPerlRegEx;
num: Integer; //用 num 来计数
begin
reg := TPerlRegEx.Create(nil);

reg.Subject := 'CodeGear Delphi 2007 for Win32';
reg.RegEx   := '\d';

num := 0;
while reg.MatchAgain do  //MatchAgain 是下一个
begin
ShowMessage(reg.MatchedExpression); //将分别显示: 2 0 0 7 3 2
Inc(num);
end;
ShowMessage(IntToStr(num)); //6

FreeAndNil(reg);
end;
--------------------------------------------------------------------------------

//分别显示找到的每一个和总数(另一种写法)
var
reg: TPerlRegEx;
num: Integer; //用 num 来计数
begin
reg := TPerlRegEx.Create(nil);

reg.Subject := 'CodeGear Delphi 2007 for Win32';
reg.RegEx   := '\d';

num := 0;
if reg.Match then
begin
repeat
ShowMessage(reg.MatchedExpression); //将分别显示: 2 0 0 7 3 2
Inc(num);
until (not reg.MatchAgain);
end;
ShowMessage(IntToStr(num)); //6

FreeAndNil(reg);
end;
--------------------------------------------------------------------------------

//目标字符串的位置与长度
var
reg: TPerlRegEx;
begin
reg := TPerlRegEx.Create(nil);

reg.Subject := 'CodeGear Delphi 2007 for Win32';
reg.RegEx   := 'Delphi';

while reg.MatchAgain do  //很明显: 本例只能找到一个结果
begin
ShowMessage(reg.MatchedExpression); //找到的字符串: Delphi
ShowMessage(IntToStr(reg.MatchedExpressionOffset)); //它所在的位置: 10
ShowMessage(IntToStr(reg.MatchedExpressionLength)); //它的长度: 6
end;

FreeAndNil(reg);
end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐