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