suporte ao Regex. • Python: • Linguagem Intuitiva. • Amplo uso comercial. • Suporta Regex (em biblioteca específica e em outras como pandas). 5 Regex: Introdução
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
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
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
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
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
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
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
Σ é 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
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
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
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)
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
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’