Antes, olha que interessante a estória do Pedro Paulo Pereira Pinto.
Bom, vou usar esta estória como modelo.
Para tanto construi o seguinte aplicativo, usando o TPerlRegEx:
O código mais importante é do botão "Analisar", veja que simples:
procedure TForm1.Analisar; const FORMATO = 'Tamanho: [%5d] Posição: [%5d] Casamento: [%s]'; var iQuant : Integer; begin iQuant := 0; //Limpando a tela de resultados Memo1.Clear; //Alimentando o RegEx Self.PerlRegEx1.RegEx := Edit1.Text; //Expressão Self.PerlRegEx1.Subject := Memo2.Text; //Texto //Primeira busca if (Self.PerlRegEx1.Match) then begin Memo1.Lines.Add(Format(FORMATO,[PerlRegEx1.MatchedExpressionLength,PerlRegEx1.MatchedExpressionOffset,PerlRegEx1.MatchedExpression])); Inc(iQuant); //Demais buscas while (Self.PerlRegEx1.MatchAgain) do begin Memo1.Lines.Add(Format(FORMATO,[PerlRegEx1.MatchedExpressionLength,PerlRegEx1.MatchedExpressionOffset,PerlRegEx1.MatchedExpression])); Inc(iQuant); end; end; //Fim Label1.Caption := Format('%d ocorrências',[iQuant]); Application.ProcessMessages; end;
Qual foi o desafio? Destacar todas as palavras presentes no texto.
Veja o resultado final:
Livros que eu li e recomendo: http://goo.gl/NwUsn