16,749
社区成员
发帖
与我相关
我的任务
分享
procedure TForm1.FormCreate(Sender: TObject);
function SearchIt(Src: PChar): PChar;
var
P: PChar;
label _notFound;
begin
P := AnsiStrPos(Src, PChar('你是第'));
if P = nil then goto _notFound;
Result := P;
Inc(P, 6);
while P^ in ['0'..'9'] do Inc(P);
if (P - Result = 6) or (P <> AnsiStrPos(P, '名')) then goto _notFound;
Exit;
_notFound:
Result := nil
end;
var
S: string;
begin
S := SearchIt('aaa你是第123名');//返回“你是第123名”
S := SearchIt('aaa你是第a123名');//返回空
ShowMessage(S);
end;
你是第(\d+)名
procedure TForm1.btn7Click(Sender: TObject);
var
reg : TPerlRegEx;
i ,j,k: Integer;
StrArr : TStringDynArray;
tmpStr : String;
pStr : WideString;
tsl : TStringList;
strQuery : String;
strcondition : String;
begin
StrArr := nil;
pStr := edt4.Text;
tsl := TStringList.Create;
reg := TPerlRegEx.Create(nil);
try
reg.RegEx := edt4.Text;
reg.Options := [preSingleLine];
reg.Subject := WideString(mmo3.Text);
tmpStr := '';
if reg.Match then
begin
repeat
tmpStr := tmpStr + reg.MatchedExpression + ' ';
until not reg.MatchAgain ;
end;
mmo4.Lines.Text := tmpStr;
finally
reg.Free;
tsl.Free;
end;
end;