aula 10 expressões regulares – estruturas de dicionários
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