• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

ndm

Expressões Regulares no Delphi

5 mensagens neste tópico

Boas.

Não sei se é o sitio certo, mas aqui vai :

Num ficheiro Html gostava de extrair todas as tags <a>, que tenham a classe Linkstyle por exemplo em

<a href="http://www.qualquersite.com" classname=LinkStyle> teste </a>

consigo fazer na boa, com as funções pos e copy, mas quero fazer isso com outra abordagem que me parece que seja mais rápida e mais adequada, que é o uso das expressões regulares.

O delphi 7, ao contrário de outras linguagens não vêm com suporte a expressões regulares, para tal instalei o componente que está em regular-expressions.info/delphi.html

tive a fazer uns testes, mas não consegui  :)

alguem me quer dar umas luzes para o problema, e se possivel indicar um bom tutorial/manual com explicações acessiveis.

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas.

Estás a a usar o TWebbrowser ou outro browser no teu programa ou estás só a abrir

o ficheiro de texto ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ndm,

O Freepascal traz na sua distribuição standard uma unit para expressões regulares... tenta examiná-la, talvez seja compatível com Delphi (e tenha uma interface simples de usar... o freepascal tem um exemplo que recorre a essa unit B))

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Desculpem por 'reviver' este tópico, mas como a pergunta não foi totalmente respondida...

Esse componente que você baixou, se chama "TPerlRegEx".

Coloque um componente TPerlRegEx no Form.

No Exemplo ele se chamará PerlRegEx1.

Para adicionar um 'regex' ao componente, basta usar

PerlRegEx1.Regex := 'sua regex aqui';

Para adicionar a string que deseja verificar:

PerlRegEx1.Subject := 'sua string';

Se alguma parte da string corresponde à expressão, setará a propriedade boleana "PerlRegEx1.Match" para true.

Caso mais de uma parte da string corresponda coma  expressão, basta usar um laço de repetição:

var
iQuant : Integer;
begin
PerlRegEx1.Regex := 'sua regex';
PerlRegEx1.Subject := 'sua string';
if (PerlRegEx1.Match) then begin //verifica se foi encontrada alguma ocorrência
  ShowMessage(PerlRegEx1.MatchedExpression); //exibe a expressão encontrada
  Inc(iQuant);
  while (RegEx.MatchAgain) do begin  //MatchAgain é uma propriedade booleana que verifica se mais resultados foram encontrados.
     Inc(iQuant);
     ShowMessage(RegEx.MatchedExpression); // exibe outra expressão encontrada
   end;  
end;
ShowMessage(IntToStr(IQuant)); // exibe a quantidade de ocorrências
end;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora