aula 10 expressões regulares – estruturas de dicionários

Post on 22-Apr-2015

114 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Aula 10Expressões Regulares – Estruturas de Dicionários

Expressões regulares

Definição

• Da Wikipédia: “Em ciência da computação, uma expressão regular (ou o estrangeirismo regex, abreviação do inglês regular expression) provê uma forma concisa e flexível de identificar cadeias de caracteres de interesse, como caracteres particulares, palavras ou padrões de caracteres. Expressões regulares são escritas numa linguagem formal que pode ser interpretada por um processador de expressão regular, um programa que ou serve um gerador de analisador sintático ou examina o texto e identifica partes que casam com a especificação dada.

• As expressões regulares são utilizadas para avaliar padrões em strings realizando operações em conjunto de caracteres, são muito utilizadas para validar entradas de dados, fazer buscas, e extrair informações de textos.

• Expressões regulares são utilizadas por editores de texto, linguagem de programação, programas utilitários, IDE de desenvolvimento.

• As expressões regulares também são chamadas de Regex e são independente de linguagem de programação pois seguem o mesmo padrão. As expressões regulares não validam dados apenas verificam se estão em uma determinadas máscara.

• As expressões regulares são formadas por metacarateres formando um padrão para obter uma casamento entre os metacrateres e o texto.

Termos utilizados

• Casar: Tem o significado de combinar uma expressão regular com um texto, é quando metacaractres especificados na expressão regular correspondem aos caracteres dos textos.

Ex: \d,\d casa com 9,1 já \d,\d não casa com 91.

• Metacaractere: é um caracteres que tem um significado especial na regex. . Curinga Qualquer caractere

[...] Conjunto Qualquer caractere incluído no conjunto

[^...] Conjunto negado Qualquer caractere não incluído no conjunto

\d Dígito o mesmo que [0-9]

\D Não-digito o mesmo que [^0-9]

\s Branco

\S Não-branco

\w Alfanumérico o mesmo que [a-zA-Z0-9_]

\W Não-alfanumérico

\ Escape Faz com que o caracteres não seja avaliado na Regex() Grupo É usado para criar um agrupamento de expressões

I Significa OU casa|bonita – pode ser casa ou bonita

* Termo está no final da expressão

casa* - bonitacasa.Não pode ser casabonita

^ Termo está no início da expressão.

^casa – casabonita. Não pode ser bonitacasa

• Quantificadores (são tipos de metacaracteres): Define o número permitido de repetições da expressão regular.

{n} Exatamente n ocorrências {10}

{n,m} No mínimo n ocorrências e no máximo m {4,5}

{n,} No mínimo n ocorrências {20,}

{,n} No máximo n ocorrências {,15}

? 0 ou 1 ocorrência car?ro – caro ou carro.

+ 1 ou mais ocorrência Ca+ro –carro, carrro, carrrro.Nunca será caro.

* 0 ou mais ocorrência ca*ro – caro, carro, carro, carrrro

Exemplos

^\d{5}-\d{3}$ Validar o CEP

Metacaracteres \dQuantificador {5}HifenMeta caracteres \dQuantificador {5}

Casado: 89900-000, 87711-000.Não Casado: 87711-00077, 89900000.

^[A-Z]{3}\d{4}$

Placa de um automóvel

Espeficicador [A-Z]Quantificador {3}Metacaracteres \dQuantificador {4}

Casado: ACB1234, Não casado: ACB12345

As expressões regulares devem inicial com ^ e terminal com $

Usando Expressões regulares em Delphi:• O recurso para uso de expressões regulares foi incluído no Delphi a

partir da versão XE. Anteriormente se utilizava componentes de terceiros.

• A record TRegEx é a principal recurso para manipular expressões regulares, esse record está disponível na unit System.RegularExpressions.

• A função mais comum e utilizada para validar expressões regulares e a IsMatch, essa função está presente na regex TRegEx e casa uma expressão regular com um texto retornado um valor Booleano.

• Dessa forma podemos armazenar a expressão regular em um variável string e verificar o retorno com o valor a ser comparado.

Usando TRegExprocedure TForm1.BitBtn1Click(Sender: TObject);begin

  if (TRegEx.IsMatch('^\d{5}-\d{3}$', ‘89900-000')) then

    ShowMessage('RegEx casado')  else

    ShowMessage('RegEx não casado')end;

procedure TForm1.BitBtn2Click(Sender: TObject);var  ExpressaoRegular: TRegEx;begin  ExpressaoRegular := TRegEx.Create('^\d{5}-\d{3}$');

  if (ExpressaoRegular.IsMatch('ACB1324')) then

    ShowMessage('RegEx casado')  else

    ShowMessage('RegEx não casado')end;

Estruturas de dicionários

Definição

• Estrutura de dicionários são representadas por coleções de dados genéricos compostos por um dados chamado de chave e outro dado chamado de valor.

• São estruturas muito semelhantes a vetores, porem o índice de um dicionário passa a ser chamado de chave.

• A chave não pode ser repetida e pode ser qualquer tipo de dado.• Estruturas de dicionários também são conhecidos como arrays

associativos ou maps.• A implementação de estruturas de dicionários pode ser feita

utilizando “Tabelas Hash” ou “Árvores”

Exemplos de estruturas de dicionários• Java

Map<String, String> dicionário = new HashMap<String, String>;

 dicionario.put("Gato", "Cat“;dicionario.put("Cachorro", "Dog");dicionario.put("Casa", "Home");dicionario.put("Filho", "Son");

 dicionario.get("Gato");

 dicionario.remove("Casa")

• PHP

$dicionario = array("Gato" => "Cat","Cachorro" => "Dog","Casa" => "Home","Filho" => "Son"

);echo $dicionario["Casa"];

unset($dicionarioy["Casa"]);

array_push( $dicionario, array( "Pai" => "Father" ) );

• Python

dicionario = {'Gato': 'Cat', 'Cachorro': 'Dog', 'Casa': 'Home', 'Filho':'Son'}

 

print dicionario['Gato']

 

del dicionario['Gato']

 dicionario['Pai'] = 'Father'

• Delphi

var Dicionario: TObjectDictionary<String, String>;

begin

Dicionario: TObjectDictionary<String, String>.Create();

try

Dicionario.Add('Gato', 'Cat');

Dicionario.Add('Cachorro': 'Dog');

Dicionario.Add('Casa', 'Home');

Dicionario.Add('Filho':'Son');

Dicionario.Remove('Casa');

ShowMessage( Dicionario.Items['Filho'] );

finally

FreeAndNil(Dicionario);

end; 

end;

Dicionários em Delphi

• Em Delphi a classe TObjectDictionary da unit Generics.Collections é utilizada para implementar estruturas de dicionários.

• Lembre-se: Estruturas de dicionário utilizam pares de chave e valor para serem implementadas.

• O Delphi utiliza tabelas hash para implementar dicionários, dessa forma ao inserir uma chave é calculado um hash com base na chave, dessa forma internamente os itens são acessados por esse hash.

• As tabelas de hash são otimizados para efetuar pesquisas.

• Lembre-se: Tanto a chave quanto o valor pode ser de qualquer tipo de dados (inteiro, record, classe, etc.).

Declarando a variável dicionário

var

Dicionario: TObjectDictionary<Integer, String>;

Criando/Destruindo o dicionário

Dicionario: TDictionary<Integer, String>.Create();

FreeAndNil(Dicionario)

Inserindo um item no dicionário

If Dicionario.ContainsKey(‘11') then

Dicionario.Add( 12, “Fulano de Tal” );

Removendo um item do dicionário

Dicionario.Remove( 12 );

Acessando um item no dicionárioDicionario.Items( 12 );

Percorrendo chaves e valores

for Chave in Dictionary.Keys do

begin

// Seu código

end

for Valor in Dictionary.Values do

begin

// Seu código

end

Principais métodos do TObjectDictionary

Add(Key, Value) Adiciona um item no dicionário Parâmetros: Chave e Valor

Remove(Key) Remove um item do dicionário Parâmetro: Chave

ContainsKey(Key) Verifica se uma chave existe no dicionárioParâmetro: Chave

Items[Key] Acessa o item do dicionário com base na chave.

Dictionary.Clear Apaga todos os valores da lista

top related