Expressões regulares



Documentos relacionados
Gerenciamento de usuários e grupos

Conhecendo as Expressões Regulares. Aurélio Marinho Jargas

Sistemas Operacionais de Redes. Aula: Gerenciamento de usuários e grupos Professor: Jefferson Silva

1 O que são e para que servem?

Basicamente, podemos dizer algo abrangente de forma específica. Definindo um padrão de busca, temos uma lista de possibilidades.

ILP - Introdução à Linguagem de Programação. Plano de estudo: - Constantes e variáveis. - Atribuindo valores às variáveis.

2 Pesquisa de valores em uma lista de dados

Conceitos básicos da linguagem C

COINF. Roteiro de Treinamento 0800Net. Versões e Revisões deste Documento. Índice. 1. Nome do Projeto. 2. Roteiro. Roteiro Treinamento Solicitante

Banco de Dados. Microsoft Access. Índice

Introdução a. Shell Script. Clésio Matos

Manual do Sistema. Página 1/14

INF 1007 Programação II

LÓGICA DE PROGRAMAÇÃO. Vitor Valerio de Souza Campos

A pesquisa de termos usando (Espaço) ou &, significa que os dois termos deverão constar no mesmo documento.

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Manual das planilhas de Obras v2.5

Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos

PROGRAMAÇÃO ORIENTADA A OBJETO EM PHP

Incrementando o Shell com Expressões Regulares. Rudson Ribeiro Alves - UVV

RECEITA FEDERAL DO BRASIL

INTRODUÇÃO À LINGUAGEM C++

Curso Capacitação da Ufms. Anexos Excel 2007

Linguagem de Programação I

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES SISTEMAS DE NUMERAÇÃO: REPRESENTAÇÃO EM PONTO FLUTUANTE. Prof. Dr. Daniel Caetano

Manual do Usuário. Menus: Produtor Rural, Propriedade Rural e GTA Módulo: Produtor Rural. dezembro de 13

SEI Superintendência de Estudos Econômicos e Sociais da Bahia Av Luiz Viana Filho, 435-4ª avenida, 2º andar CAB CEP Salvador - Bahia Tel.

Criar formulários preenchidos pelos usuários no Word

LÓGICA DE PROGRAMAÇÃO. Professor Celso Masotti

1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros.

Sistema Integrado CAPES - Programa de Apoio a Eventos no País

Oficina de ShellScript

P r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1:

Java Como Programar, 8/E

14.1 Vetor - Problemas

Estruturas de Repetição

9 Comandos condicionais

Introdução aos critérios de consulta. Um critério é semelhante a uma fórmula é uma cadeia de caracteres que pode consistir em

Testando e Comparando Valores

SECRETARIA DA RECEITA FEDERAL DO BRASIL INSTRUÇÃO NORMATIVA Nº 1.201, DE 18 DE OUTUBRO DE 2011

MANUAL DE UTILIZAÇÃO DOMINIO ATENDIMENTO

Bem vindo Joe Ramone!

Manual do Teclado de Satisfação Online WebOpinião

Programação: Estruturas de seleção

PREFEITURA DO MUNICÍPIO DE OSASCO MANUAL PARA CONVERSÃO DE RECIBOS PROVISÓRIOS DE SERVIÇO EM NF-E

Segurança de Aplicações Aula 14

Introdução. <<voltar Tutorial Epi Info. Índice

MÓDULO DE MATRICULA UNASUS

Usando o do-file editor Automatizando o Stata

Mais configuração OptraImage

NOTA FISCAL DE SERVIÇO ELETRÔNICA (NFS-e)

PHP (PHP Hypertext Preprocessor)

LSOF - LiSt Open Files

Sefinnet Versão Arquivo de Importação SefinNet

5 Apresentando a linguagem C

BrOffice.Org Calc 3.2 Prof. Wagner Bugs 3.2

Primeiros passos das Planilhas de Obra v2.6

ALGORITMOS MEMÓRIA, VARIÁVEIS E CONSTANTES, OPERADORES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Instalação do Sirius sem estações. O primeiro passo é instalar o Firebird 1.5, ele se encontra no CD de instalação do Sirius na pasta Firebird.

Desmistificando o Programa de Computador

Roteiro para atualização da planilha de múltiplos usando o Excel 2007.

Introdução ao Shell Script

VERSÃO VERSÃO FINANCEIRO NEFRODATA ESTOQUE FINALIZAÇÃO: 10 JUN.

Criar as tabelas para um banco de dados

1) Verifique se o Microsoft.Net Framework 3.5 está instalado, para isto, abrir o Painel de Controle e verificar:

GladiusSimpleReport. Este manual, visa mostrar, como utilizar o GladiusSimpleReport atravéz de exemplos.

Aula de JavaScript 05/03/10

Preparatório LPIC-101

Manipulando Strings no VBA (Replace, Mid e InStr)

BC0505 Processamento da Informação

Usando o Conference Manager do Microsoft Outlook

Universidade Federal do Espírito Santo Centro de Ciências Agrárias CCENS UFES Departamento de Computação. Shell Script

BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Tóffolo 2011/1

GP Gestão de Pessoal. Gerador de Arquivos e Relatórios

SP-6000/ES ENSAQUE SIMPLES

IFTO LÓGICA DE PROGRAMAÇÃO AULA 05

CERTIFICADO DE CONCLUSÃO LIVRO E CERTIFICADO

Aula 4 Estatística Conceitos básicos

Bem-vindo ao tópico sobre consultas no SAP Business One.

Linguagem de Programação

LASERTECK SOFTECK FC MANUAL DO USUÁRIO

Financeiro - Boleto : Remessa e Retorno

CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word Sumário

SISTEMAS OPERACIONAIS LIVRES (LINUX) Professor Carlos Muniz

Consultar Dados de Conta

SUMÁRIO. 1. Instalação Operações Comunicação Modo Ethernet Serial... 6

Secretaria de Estado de Fazenda do Rio de Janeiro GIA-ICMS. Instruções de Preenchimento por meio do Programa Gerador (versão

CentreWare Web e superior Agosto de P Xerox CentreWare Web Identificar e Aplicar o Firmware Patch para Escanear

Cash Management Produtos Recebimentos. CÓDIGO DE BARRAS COBRANÇA Versão 2.3 Setembro/2012 Carteiras com ou sem registro

Resoluções 3.954/11 e 4.113/12. Leiaute do Arquivo de Movimento ACIC001 (CI01) Versão deste documento: 1.1

Manual do Usuário. Solução de Informações Gerenciais - BI

A p o s t i l a M i c r o s o f t A c c e s s 97

Transcrição:

Expressões regulares Expressão regular é um conjunto de expressões que funcionam de forma semelhante as expressões aritméticas, utilizando operadores para fazer combinações com expressões menores. Existem dois tipos de expressões regulares: Simples - utiliza os caracteres numéricos e os caracteres: *,., ^, $, e [ ]. Estendidas - utiliza os caracteres numéricos e os caracteres: *,.,?, +, ^, $, {, }, [, ], (, ),, \< e \>. Abaixo segue a tabela dos metacaracteres utilizados nas expressões regulares. Metacaractere Nome Posição ^ circunflexo Indica o começo de linha $ cifrão Indica o final de linha Texto [abc] lista Encontra ocorrências com as letras a ou b ou c [a-z] lista Encontra ocorrências com as letras de a à z [^abc] (abc aeiou) lista de negação Encontra ocorrências que não tenham as letras de a, b e c ou Encontra ocorrências que tenham as letras de a, b e c ou as vogais aeiou Quantidade a{3} chaves Combina a letra a três vezes a{1,3} chaves Combina a letra a de 1 à 3 vezes a{3,} chaves Combina a letra a no mínimo três vezes Quantidade a? opcional Combina a letra a zero ou uma vez a* asterisco Combina a letra a zero ou mais vezes a+ mais Combina a letra a uma ou mais vezes Curingas. ponto Encontra qualquer caractere.* curinga Encontra qualquer coisa 1

As expressões regulares são utilizadas no shell do através dos comandos de filtragem grep, egrep, fgrep e sed e pelas linguagens awk, perl e etc. Através de expressões regulares, podemos filtrar ou validar textos como: data e horário, endereço IP, endereço de email, RG, CPF, Cep, telefone, dados de uma coluna ou linha de um texto, etc. Para mostrar os exemplos abaixo, usaremos o comando grep, o arquivo /etc/passwd e criaremos os arquivos palavras.txt, letras.txt e numeros.txt. $ cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/bin/sh man:x:6:12:man:/var/cache/man:/bin/sh lp:x:7:7:lp:/var/spool/lpd:/bin/sh mail:x:8:8:mail:/var/mail:/bin/sh news:x:9:9:news:/var/spool/news:/bin/sh uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh proxy:x:13:13:proxy:/bin:/bin/sh www-data:x:33:33:www-data:/var/www:/bin/sh backup:x:34:34:backup:/var/backups:/bin/sh list:x:38:38:mailing List Manager:/var/list:/bin/sh irc:x:39:39:ircd:/var/run/ircd:/bin/sh gnats:x:41:41:gnats Bug-Reporting System (admin):/var/lib/gnats:/bin/sh nobody:x:65534:65534:nobody:/nonexistent:/bin/sh Debian-exim:x:100:102::/var/spool/exim4:/bin/false statd:x:101:65534::/var/lib/nfs:/bin/false identd:x:102:65534::/var/run/identd:/bin/false messagebus:x:103:104::/var/run/dbus:/bin/false avahi:x:104:105:avahi mdns daemon,,,:/var/run/avahi-daemon:/bin/false haldaemon:x:105:108:hardware abstraction layer,,,:/home/haldaemon:/bin/false postgres:x:106:112:postgresql administrator,,,:/var/lib/postgresql:/bin/bash gdm:x:107:113:gnome Display Manager:/var/lib/gdm:/bin/false hplip:x:108:7:hplip system user,,,:/var/run/hplip:/bin/false aluno1:x:1000:1000:aluno1,,,:/home/aluno1:/bin/bash sshd:x:109:65534::/var/run/sshd:/usr/sbin/nologin mysql:x:110:115:mysql Server,,,:/var/lib/mysql:/bin/false 2

oracle:x:1003:1003::/usr/lib/oracle/xe:/bin/bash bind:x:111:116::/var/cache/bind:/bin/false $ cat > palavras.txt O criador do Seja livre use alunos Projeto Brasil Aperte ENTER Aperte CTRL+D O circunflexo ^ O caractere circunflexo representa um texto no inicio da linha. $ grep palavras.txt O criador do No exemplo acima, retornam todas as ocorrências da palavra. $ grep ^ palavras.txt Agora, colocando o ^circunflexo, retorna apenas a primeira linha que começa com a palavra. Você também pode especificar a string com o caractere dentro de aspas simples ou duplas. $ grep '^' palavras.txt 3

$ grep "^" palavras.txt O cifrão $ O caractere cifrão representa um texto no final da linha. Exemplo: $ grep /bin/bash$ /etc/passwd root:x:0:0:root:/root:/bin/bash aluno1:x:1000:1000:aluno1,,,:/home/aluno1:/bin/bash O colchete [ ] O colchete ou lista, representa um intervalo de caracteres especificados dentro dos colchetes, podendo ser números ou letras, por exemplo os números de 0 à 9 [0-9] e as letras de a à z [a-z], veja o exemplo abaixo: Retornam somente as palavras em maiúsculo $ grep '' palavras.txt Retornam somente as palavras em minúsculo $ grep '' palavras.txt Neste caso, usaremos o colchete usando a letra L maiúsculo e l minúsculo entre colchete [Ll] para retornar tanto as palavras em maiúsculo e em minúsculo. $ grep '[Ll]inux' palavras.txt 4

O ponto. O caractere ponto, representa qualquer letra, ou seja, qualquer caractere em uma determinada posição, podendo ser também um número, um símbolo, um espaço, um TAB, ou seja, qualquer caractere. $ cat palavras.txt O criador do Seja livre use alunos Projeto Brasil No exemplo abaixo retorna somente qualquer caractere a partir do começo da linha que vem seguido de uma vogal, repare que não retornam as frases "Projeto Brasil" e "O criador do ", pois a letra P de "Projeto Brasil" e a letra O de "O criador de " não vem seguidas de uma vogal. Abaixo é exibido qualquer caractere seguido de uma vogal. $ grep '^.[aeiou]' palavras.txt Seja livre use Neste exemplo, retornam apenas as palavras com qualquer caractere, vem seguido das letras inu e que termina com x. $ grep '^.[inu]*x' palavras.txt Outro exemplo semelhante ao citado acima, é você usar o ponto para procurar tamanho fixo de uma string, sem depender de seu conteúdo. No exemplo abaixo, retornam apenas as palavras que tem 5 caracteres, onde ^ é o início da linha e $ é o fim da linha. 5

$ grep '^...$' palavras.txt As chaves { } Um número dentro de chaves representa a quantidade de repetições do caractere anterior. Este exemplo é semelhante ao anterior, especificando o número de caracteres e não pontos. Observe que foi usado o comando egrep e não grep, pois as chaves { } fazem parte das expressões regulares estendidas (avançadas). $ egrep '^.{5}$' palavras.txt Para usar o grep teríamos que colocar a \ barra invertida antes das chaves, por isso, é mais fácil usar o egrep nestes casos. $ grep '^.\{5\}$' palavras.txt As chaves aceitam um intervalo especificando uma faixa de repetições com um valor mínimo e máximo. No exemplo abaixo, retornam as linhas que tenham entre 5 e 9 caracteres. $ egrep '^.{5,9}$' palavras.txt alunos Caso você não especifique o segundo número e mantenha a vírgula, ficará uma faixa infinita de caracteres. No exemplo abaixo, serão exibidas as linhas que têm 9 ou mais caracteres. 6

$ egrep '^.{9,}$' palavras.txt O criador do Seja livre use Projeto Brasil Este exemplo abaixo, retorna todos os usuários que possuem o UID ou GID maior que 4 caracteres numéricos de 0 à 9 [0-9]. $ egrep '[0-9]{4,}' /etc/passwd sync:x:4:65534:sync:/bin:/bin/sync nobody:x:65534:65534:nobody:/nonexistent:/bin/sh statd:x:101:65534::/var/lib/nfs:/bin/false identd:x:102:65534::/var/run/identd:/bin/false aluno1:x:1000:1000:aluno1,,,:/home/aluno1:/bin/bash sshd:x:109:65534::/var/run/sshd:/usr/sbin/nologin oracle:x:1003:1003::/usr/lib/oracle/xe:/bin/bash O curinga.* (ponto asterístico) (AND) O caractere.* ponto asterisco representa qualquer coisa, inclusive, nada entre partes de uma linha não importando o que há de conteúdo. O.* (AND) funciona de forma semelhante a um AND lógico em linguagens de programação, ou seja, somente exibe o resultado da pesquisa se encontrar ambas as partes da pesquisa. Neste exemplo são exibidos os usuários que começam com letras de a à z [a-z] e terminam com a palavra bash. $ egrep '^[a-z].*bash$' /etc/passwd root:x:0:0:root:/root:/bin/bash postgres:x:106:112:postgresql administrator,,,:/var/lib/postgresql:/bin/bash aluno1:x:1000:1000:aluno1,,,:/home/aluno1:/bin/bash oracle:x:1003:1003::/usr/lib/oracle/xe:/bin/bash 7

O or (barra em pé) (OR) O caractere pipe barra em pé representa em uma pesquisa para procurar uma coisa ou outra. O (OR) deve ser usado dentro de parênteses ( ) e funciona de forma semelhante a um OR lógico em linguagens de programação, ou seja, exibe o resultado da pesquisa se encontrar uma das partes da pesquisa. Neste exemplo são exibidos as palavras que começam com palavras ou ou Linus. $ egrep '^( Linus)' palavras.txt Os repetidores? + * Os caracteres interrogação (chamado de opcional), o mais e o asterisco são repetidores que especificam a quantidade e funcionam como as chaves { }. Caractere Nome Equivale Significado? opcional {0,1} Aparece ou não (opcional) + mais {1,} Aparece no mínimo uma vez * asterisco {0,} Aparece em qualquer quantidade Lista de negação [^] Podemos especificar o caractere circunflexo dentro de colchetes para negar uma expressão. No exemplo abaixo são mostradas as linhas que não começam com vogais, repare que a palavra alunos não é exibida, pois começa com vogal. 8

$ cat palavras.txt O criador do Seja livre use Projeto Brasil alunos $ grep '^[^aeiou]' palavras.txt O criador do Seja livre use Projeto Brasil Intervalo de lista [-] Podemos especificar um hífen dentro de colchetes, para indicar um intervalo entre duas letras que será estendido para todas as letras dentro do intervalo. Por exemplo [a-f] quer dizer para retornar todas as letras no intervalo de a à f [abcdef] ou [0-9] para retorna todos os números de 0 à 9 [0123456789]. No exemplo abaixo são mostradas as linhas que estão no intervalo de a à f. $ cat > letras.txt abcdefghij defabc abcdef rpzstq xwzkwmp Aperte ENTER Aperte CTRL+D 9

$ egrep '[a-f]' letras.txt abcdefghij defabc abcdef Neste exemplo abaixo, exibimos somente as linhas com as letras que não estão no intervalo de [a-f], repare que é exibida a linha com as letras de [abcdefghij], pois as letras ghij estão fora do intervalo de [a-f]. $ egrep '[^a-f]' letras.txt abcdefghij rpzstq xwzkwmp Neste exemplo abaixo, exibimos somente as linhas com os números que começam com 1 (102, 15 e 111) e que tenha 3 dígitos {0,1,2} Ex: 102 e 111. $ cat > numeros.txt 102 15 9 111 1024 10555 Aperte ENTER Aperte CTRL+D $ egrep '^1[0-9]{0,2}$' numeros.txt 102 15 111 ou com grep usando escape nas chaves com barra invertida \. $ grep '^1[0-9]\{0,2\}$' numeros.txt 102 15 111 10