32
1 Expressões regulares: Uma introdução Prof. Jesús P. Mena-Chalco [email protected] 30/03/2016 III Semana do CMCC/UFABC

Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

1

Expressões regulares: Uma introdução

Prof. Jesús P. [email protected]

30/03/2016

III Semana do CMCC/UFABC

Page 2: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

2

Apresentação

Professor:Jesús P. Mena-Chalco (CMCC)

Formação: - Engenheiro da Computação.- Mestre e doutor em Ciência da Computação.Instituto de Matemática e Estatística da USP.

Sala 517-A, torre 2, 5º Andar.

Áreas de pesquisa:- Cientometria/Bibliometria, Reconhecimento de padrões.

Page 3: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

3

Imagine:Você tem UM problema e descobre que precisa usar expressões regulares…

Parabéns! Agora você tem DOIS problemas!

Page 4: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

4

Expressões regulares

Regular expressionsRegexregexp

São cadeias de texto especiais utilizadas para busca/identificação de “padrões” textuais.

*.txtMaria* → Maria, Mariana, Marianna, Mariano, Mariane

Page 5: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

5

Ferramenta

Crie uma conta na plataforma Cloud9:https://c9.io/

Page 6: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

6

Page 7: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

7

Page 8: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

8

wget http://professor.ufabc.edu.br/~jesus.mena/courses/regex/dados.zipunzip dados.zip  

Page 9: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

9

Localizando textos

Page 10: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

10

Expressões regulares

Problema:Quais disciplinas o “Paulo Ricardo” está cursando?

Page 11: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

11

Problema 1

Quais disciplinas o “Paulo Ricardo” está cursando?

Page 12: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

12

Duas ferramentas: grep e egrep

grep (Global Regular Expressions Print):Programa que lê um arquivo (ou conjunto de arquivos), linha a linha, e imprime as linhas que contenham um padrão.

Padrão: é uma expressão que especifica um conjunto de cadeias interpretando carateres como meta-carateres.

egrep (Extended grep)

Page 13: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

14

egrep ­n "Paulo Ricardo" alunos.txt 

egrep ­i "Paulo Ricardo" alunos.txt 

egrep ­v "Paulo Ricardo" alunos.txt 

Alguns parâmetros especiais

Page 14: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

16

Problema 2

Quais disciplinas o “Lucas Sousa” está cursando?

Page 15: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

17

Problema 2

Quais disciplinas o “Lucas Sousa” está cursando?

egrep "Lucas .* Sousa" alunos.txt

Page 16: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

18

Problema 2

Quais disciplinas o “Lucas Sousa” está cursando?

egrep "Lucas .* Sousa" alunos.txt

Page 17: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

20

Problema 2

Quais disciplinas o “Lucas Sousa” está cursando?Quais disciplinas o “Lucas Souza” está cursando?

egrep "Lucas .* Sou[s|z]a" alunos.txt

Page 18: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

23

Problema 2

Quais disciplinas o “Lucas Sousa” está cursando?Quais disciplinas o “Lucas Souza” está cursando?

egrep "Lucas .* Sou[s|z]a  " alunos.txt

2 espaços em branco

Page 19: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

24

Problema 3

Quais os alunos que estão cursando a disciplina de Processamento da Informação C1, C2, C3, Diuno em Santo André?

egrep "Processamento da Informação [C1|C2|C3]-Diurno" alunos.txt

Page 20: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

25

Problema 3

Quais os alunos que estão cursando a disciplina de Processamento da Informação C1, C2, C3, Diuno em Santo André?

egrep "Processamento da Informação [C1|C2|C3]-Diurno" alunos.txt

egrep "Processamento da Informação C[1|2|3]-Diurno" alunos.txt

egrep "Processamento da Informação (C1|C2|C3)-Diurno" alunos.txt

Page 21: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

27

Problema 3

Quais os alunos que estão cursando a disciplina de Processamento da Informação C1, C2, C3, Diuno em Santo André?

egrep "Processamento da Informação (C1|C2|C3)-Diurno .*André" alunos.txt

egrep "Processamento da Informação (C1|C2|C3)-Diurno .*André" alunos.txt | wc

Page 22: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

28

Problema 4

Quais os alunos ingressantes em 2015?

egrep "15" alunos.txt

Page 23: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

29

Problema 4

Quais os alunos ingressantes em 2015?

egrep "15" alunos.txt

egrep "[0-9][0-9][0-9][0-9][0-9][0-9]15" alunos.txt

egrep "[0-9]{6}15" alunos.txt

Page 24: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

31

Problema 5

Quantos os alunos ingressantes em 2015 e matriculados em 2016?

Quantos os alunos ingressantes em 2006 e matriculados em 2016?

egrep -o "[0-9]{6}15" alunos.txt

egrep -o "[0-9]{6}15" alunos.txt | uniq | wcegrep -o "[0-9]{6}06" alunos.txt | uniq | wc

egrep -o "[0-9]{6}15" alunos.txt | uniq > alunos2015.txt

Page 25: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

32

Problema 6

Quantos alunos estão matriculados em FUV e FVV?

Page 26: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

33

Problema 6

Quantos alunos estão matriculados em FUV e FVV?

egrep "Funções de Uma Variável" alunos.txt | egrep -o "[0-9]{8}" > alunosFUV.txt

egrep "Funções de Várias Variáveis" alunos.txt | egrep -o "[0-9]{8}" > alunosFVV.txt

cat alunosFUV.txt alunosFVV.txt | sort | uniq -d

cat alunosFUV.txt alunosFVV.txt | sort | uniq -d | wc -l 74

Page 27: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

34

Outros problemas

egrep "José" jose.txt egrep ­i "José" jose.txt egrep ­i "José" jose.txt | wc ­l

No poema, “Agora José”, quantas vezes é feita a refência José?

Na letra da música, “Roda viva”, quantas vezes é feita a refência Roda?

Rodamoinho ão deve ser considerado:

Page 28: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

35

Outros problemas

egrep "José" jose.txt egrep ­i "José" jose.txt egrep ­i "José" jose.txt | wc ­l

No poema, “Agora José”, quantas vezes é feita a refência José?

Na letra da música, “Roda viva”, quantas vezes é feita a refência Roda?

Rodamoinho ão deve ser considerado:

egrep ­i "roda\b" rodaviva.txt

Page 29: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

36

Localizando e substituindo textos

Page 30: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

37

Page 31: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

38

Page 32: Expressões regulares: Uma introduçãoprofessor.ufabc.edu.br/~jesus.mena/courses/regex/mini...12 Duas ferramentas: grep e egrep grep (Global Regular Expressions Print): Programa que

39