Slide 1

Slide 1 text

Python e Regex deu match! Palestrante: MSc. Sancha Azevedo.

Slide 2

Slide 2 text

2 Apresentação

Slide 3

Slide 3 text

• “O que significa mesmo Regex? “ Regex: Introdução 3 Regex: Introdução

Slide 4

Slide 4 text

• A sigla Regex é originada de: • Expressões Regulares (Regular Expressions). 4 Regex: Introdução

Slide 5

Slide 5 text

• Regex & Python • Muitas Linguagens de programação dão suporte ao Regex. • Python: • Linguagem Intuitiva. • Amplo uso comercial. • Suporta Regex (em biblioteca específica e em outras como pandas). 5 Regex: Introdução

Slide 6

Slide 6 text

Regex: Introdução “Regex é útil para que mesmo???” 6

Slide 7

Slide 7 text

• Onde o Regex pode ser aplicado? • Validação de entrada de dados. • Teste de Software. • Ciência/mineração de Dados. • Processos ETL (Extract, Transform, Load). • Construção de parsers. • Tarefas diárias, etc. • Sempre que for necessário buscar por um padrão em um string. 7 Regex: Introdução

Slide 8

Slide 8 text

• De forma Geral: • Para descrever um padrão em strings(texto). • Permite buscar, substituir e dividir strings que “casam” com o padrão descrito. • Usar uma quantidade mínima de código. Regex: Introdução 8

Slide 9

Slide 9 text

• Aplicabilidade - Exemplo: • Considere o trecho de um txt, mostrado a seguir: Regex: Introdução 251:identifying spider bites 252:history of orcas island 253:tooth abscess 254:barrett's esophagus 255:teddy bears 256:patron saint of mental illness 257:holes by louis sachar 258:hip roof 259:carpenter bee 260:the american revolutionary 9 Texto da Trec: Web 2014 topics

Slide 10

Slide 10 text

• Aplicabilidade - Exemplo: • Precisamos apenas do texto. • Para obter o texto apenas, é preciso encontrar/remover Números do Texto: Regex: Introdução 251: identifying spider bites 252: history of orcas island 253: tooth abscess 254: barrett's esophagus 255: teddy bears 256: patron saint of mental illness 257: holes by louis sachar 258: hip roof 259: carpenter bee 260: the american revolutionary 10

Slide 11

Slide 11 text

• Aplicabilidade - Exemplo: • Precisamos apenas do texto. • Para obter o texto apenas, é preciso encontrar/remover Números do Texto: Regex: Introdução Números seguem um padrão?? 251: identifying spider bites 252: history of orcas island 253: tooth abscess 254: barrett's esophagus 255: teddy bears 256: patron saint of mental illness 257: holes by louis sachar 258: hip roof 259: carpenter bee 260: the american revolutionary 11

Slide 12

Slide 12 text

• Aplicabilidade - Exemplo: • Observa-se o padrão, descreve-o em um regex e aplica ao texto. Regex: Introdução 251: identifying spider bites 252: history of orcas island 253: tooth abscess 254: barrett's esophagus 255: teddy bears 256: patron saint of mental illness 257: holes by louis sachar 258: hip roof 259: carpenter bee 260: the american revolutionary identifying spider bites history of orcas island tooth abscess barrett's esophagus teddy bears patron saint of mental illness holes by louis sachar hip roof carpenter bee the american revolutionary 12

Slide 13

Slide 13 text

• Exemplo : Regex: Introdução 13 Dados Extraídos da coleção Crimes do Kaggle

Slide 14

Slide 14 text

• Exemplo : Se desejarmos obter apenas informações de crimes que ocorreram de madrugada? Regex: Introdução 14 Dados Extraídos da coleção Crimes do Kaggle

Slide 15

Slide 15 text

15 Regex: Introdução

Slide 16

Slide 16 text

Breve Histórico: Regex: Introdução 16

Slide 17

Slide 17 text

• Breve Histórico: • Início das expressões regulares (e modelo de rede neural proposto): • 1943: artigo publicado: “A logical calculus of the ideas immanent in nervous activity” pelos neurofisiologistas: Warren McCulloch and Walter Pitts. • Criação dos termos: conjuntos regulares e expressões regulares: • 1956: artigo publicado “Representation of events in nerve nets and finite automata” por Stephen Kleene. • Estensão do estudo de Kleene: • 1968: Ken Thompson, conhecido pelo projeto e implementação do UNIX e da linguagem B, publicou o artigo: “Regular Expression Search Algorithm”. Regex: Introdução 17

Slide 18

Slide 18 text

Regex: Teoria 18

Slide 19

Slide 19 text

• Definição: • Uma expressão regular (ER) sobre um alfabeto Σ é indutivamente definida como se segue: • ∅ é uma ER que denota a linguagem vazia. • ε é uma ER que denota a linguagem contendo exclusivamente a palavra vazia, ou seja {ε}. • Qualquer símbolo x pertencente ao alfabeto Σ é uma ER e denota a linguagem contendo a palavra unitária x, ou seja {x}. Regex: Teoria 19

Slide 20

Slide 20 text

• Definição (continuação..): • Se r e s são ERs e denotam respectivamente as linguagens R e S, respectivamente, então: • 1. (r+s) é ER e denota a linguagem R ∪ S • 2. (rs) é ER e denota a linguagem {uv | u∈R e v∈S} • 3. (r*) é ER e denota a linguagem R* Regex: Teoria 20

Slide 21

Slide 21 text

21 Conhecendo Regex

Slide 22

Slide 22 text

22 Conhecendo Regex • Regex é composto: • Metacaracteres - Caracteres com significado especial. • Caracteres – utilizados no “casamento” do padrão. • Ex.: .* (banana | laranja | manga) metacaracter Reconhece: Eu gosto de banana Eu não gosto de laranja Eu gosto de manga caractere Não Reconhece: Eu gosto de abacaxi

Slide 23

Slide 23 text

Metacaracteres 23 Conhecendo Regex MetaCaracter Descrição Exemplo [ ] Um conjunto de caracteres “[a-z]” \ Para caractere de escape ou ‘especiais’ “\d” . Qualque caractere, exceto \n “.o" ^ Início "^Bom " $ Fim “Adeus$" * Zero ou mais ocorrências “noo*ssa" + Uma ou mais ocorrências “nos+a" {} No de ocorrências entre {} “xbacon{2}" | Ou “fica|sai" () grupo “boa-(tarde|noite)

Slide 24

Slide 24 text

24 Conhecendo Regex • Exemplos: Padrão: [0-9]+ • Casam: ab12, 345, xy0998 • Não casam: abc, x_y Padrão: ^[0-9]+ Casam: 345, 998abc Não casam: abc, ab12 Padrão: ^[0-9]+$ Casam: 345, 4 Não casam: abc, 12ab33 • Exemplos: Padrão: ^[a-z]+$ • Casam: “aurana”, “loja” • Não casam: “Rua Acre n 12” • Exemplos: Padrão: ^[a-zA-Z0-9\s]+$ • Casam: “Rua Acre n 12, “A” ”1” • Não casam: “Rua A_12”

Slide 25

Slide 25 text

25 Praticando Regex no Python

Slide 26

Slide 26 text

Vamos identificar os números e “:” do arquivo com python? 26 Praticando Regex no Python 251: identifying spider bites 252: history of orcas island 253: tooth abscess 254: barrett's esophagus 255: teddy bears 256: patron saint of mental illness 257: holes by louis sachar 258: hip roof 259: carpenter bee 260: the american revolutionary

Slide 27

Slide 27 text

Buscando o padrão.. 27 • Saída: Praticando Regex no Python Obs: ❖ Também pode usar a função findall : busca todas as substrings que casam com padrão ❖ match(): se o regex casa com o início da string Search: Busca uma localização onde a string ‘casa’

Slide 28

Slide 28 text

Vamos indentificar os números e “:” do arquivo com python? • Saída: 28 Praticando Regex no Python

Slide 29

Slide 29 text

29 • Saída: Vamos indentificar os números e “:” do arquivo com python?

Slide 30

Slide 30 text

30 • Saída: Vamos indentificar os números e “:” do arquivo com python?

Slide 31

Slide 31 text

Usando Split para separar os números do texto 31 • Saída: Praticando Regex no Python

Slide 32

Slide 32 text

Vamos filtrar o dataframe para conter somente ocorrências na madrugada? 32 Praticando Regex no Python

Slide 33

Slide 33 text

Buscando padrão na coluna OCURRED_ON_DATE, TRAZ LINHAS DOS DADOS QUE CASAM COM PADRÃO 33 Praticando Regex no Python

Slide 34

Slide 34 text

34 Praticando Regex no Python

Slide 35

Slide 35 text

• “Tão Simples quanto um comando de busca e tão poderoso quanto uma linguagem de programação.” Jefrey E. F. Friedl • Contato: [email protected] 35 Agradecimentos e contato