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

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

Embed Size (px)

Citation preview

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

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

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

Expressões regulares

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

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.

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

• 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.

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

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.

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

• 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

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

• 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

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

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 $

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

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.

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

• 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.

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

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;

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

Estruturas de dicionários

Page 13: Aula 10 Expressões Regulares – 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”

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

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")

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

• PHP

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

);echo $dicionario["Casa"];

unset($dicionarioy["Casa"]);

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

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

• Python

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

 

print dicionario['Gato']

 

del dicionario['Gato']

 dicionario['Pai'] = 'Father'

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

• 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;

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

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.

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

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

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

Declarando a variável dicionário

var

Dicionario: TObjectDictionary<Integer, String>;

Criando/Destruindo o dicionário

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

FreeAndNil(Dicionario)

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

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 );

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

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

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

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