SEGUNDA EDIÇÃO. Expressões Regulares. Guia de Bolso. Guia de Bolso: Expressões Regulares



Documentos relacionados
Programação Web Prof. Wladimir

Informática I. Aula 6. Aula 6-12/09/2007 1

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

Algoritmos com VisuAlg

PÓS-GRADUAÇÃO EM MATEMÁTICA COMPUTACIONAL INFORMÁTICA INSTRUMENTAL

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

1 O que são e para que servem?

Introdução ao PHP. Prof. Késsia Marchi

Tópicos em Engenharia de Software (Optativa III) AULA 2. Prof. Andrêza Leite (81 )

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

CONVENÇÃO DE CÓDIGO JAVA

Processamento de dados XML

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis

Resolução de problemas e desenvolvimento de algoritmos

Programação Orientada a Objetos com PHP & MySQL Sistema Gerenciador de Banco de Dados: Introdução e configuração de bases de dados com Postgre e MySQL

Segurança em aplicações web: pequenas ideias, grandes resultados Prof. Alex Camargo

Internet e Programação Web

COMPILADORES E INTERPRETADORES

Sumário. Introdução ao Universo Linux Parte I

Os objetivos indicados aplicam-se a duas linguagens de programação: C e PHP

Conteúdo Programático de PHP

Treinamento em PHP. Aula 1. Ari Stopassola Junior

AULA Uma linguagem de programação orientada a objetos

Algoritmo. Linguagem natural: o Ambígua o Imprecisa o Incompleta. Pseudocódigo: o Portugol (livro texto) o Visualg (linguagem) Fluxograma

Introdução a Informática. Prof.: Roberto Franciscatto

Python: Comandos Básicos. Claudio Esperança

Quadro de consulta (solicitação do mestre)

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto

VisuALG Estruturas de Repetição. Professores: Vilson Heck Junior Felipe Schneider Costa

Introdução ao Javascript. Parte 2 Prof. Victor Hugo Lopes

PHP() é uma linguagem de integração de servidor que permite a criação de paginas dinâmicas. Como todas

3 Parsing Expression Grammars

Aula 2. Objetivos Conceitos; Instalação do Text Pad; Entendendo o código java do AloMundo1 Codificação do AloMundo2,AloMundo3 e AloMundo4.

PHP AULA1. Prof. Msc. Hélio Esperidião

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE SÃO PAULO PUC-SP. FACULDADE (do aluno) CURSO. TÍTULO DO PROJETO Subtítulo do Projeto AUTOR DO PROJETO

Linguagens de Programação. Linguagens de Script. Carlos Bazilio

e à Linguagem de Programação Python

Testes de Software. Por quê testar? 3/28/2011. Andrew Diniz da Costa. Manter alta qualidade. Prevenir e encontrar defeitos

Testes de Software. Anne Caroline O. Rocha TesterCertified BSTQB NTI UFPB. Anne Caroline O. Rocha Tester Certified BSTQB NTI UFPB

CURSO B SICO DE PERL

Oficina de Programação em Python direcionada para o desenvolvimento de jogos

O que é o JavaScript?

Apostila de Fundamentos de Programação I. Prof.: André Luiz Montevecchi

Este relatório tem por objetivo, abordar a sintaxe XML.

Gerador de Relatório

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

Criar a classe Aula.java com o seguinte código: Compilar e Executar

LINGUAGEM ORIENTADA A OBJETOS

Java - Introdução. Professor: Vilson Heck Junior. vilson.junior@ifsc.edu.br

QUALIFICAÇÃO TÉCNICA EM DESENVOLVIMENTO DE SISTEMAS

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

Curso Técnico em Redes

2. O AMBIENTE DE PROGRAMAÇÃO EM C

Microsoft Excel 2007

&XUVRGH,QWURGXomRDR (GLWRUGH3ODQLOKDV([FHO

Sumário. INF01040 Introdução à Programação. Elaboração de um Programa. Regras para construção de um algoritmo

Introdução à Lógica de Programação

PHP. Hypertext Pre-Processor

Fundamentos de Programação. Turma CI-240-EST. Josiney de Souza.

Pontifícia Universidade Católica de São Paulo Departamento de Ciência da Computação

Modelagem de Processos. Prof.: Fernando Ascani

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: Prof. Dr. Raimundo Moura

Instituto Federal do Sertão-PE. Curso de PHP. Professor: Felipe Correia

UNIVERSIDADE FEDERAL DE SÃO PAULO ESCOLA DE FILOSOFIA, LETRAS E CIÊNCIAS HUMANAS

SHELL SCRIPT P R O F I S S I O N A L

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

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

O melhor do PHP. Por que PHP? CAPÍTULO 1. Uma Pequena História do PHP

FTIN Formação Técnica em Informática Módulo Sistema Proprietário Windows AULA 06. Prof. André Lucio

Sumário. 1

FACULDADE LEÃO SAMPAIO CURSO DE GRADUAÇÃO EM ENFERMAGEM IX SEMANA DE ENFERMAGEM. Edital 001/2014

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia de Computação CECOMP

Construção de Compiladores. Construção de Compiladores. Motivação. Motivação. Contexto Histórico. Classificações: Gerações 09/03/2010

AULA 12 CLASSES DA API JAVA. Disciplina: Programação Orientada a Objetos Professora: Alba Lopes alba.lopes@ifrn.edu.br

Paradigmas de Linguagens de Programação. Aspectos Preliminares

Engenharia de Requisitos Estudo de Caso

UNIVERSIDADE PRESBITERIANA MACKENZIE FACULDADE DE COMPUTAÇÃO E INFORMÁTICA

Trabalhos Práticos. Programação II Curso: Engª Electrotécnica - Electrónica e Computadores

BANCO DE DADOS II. AULA MySQL.

O que são Bancos de Dados?

RevISTa: Publicação técnico-científica do IST-Rio. nº 05 Data: Dezembro / 2012 ISSN

Programação WEB. Prof. André Gustavo Duarte de Almeida docente.ifrn.edu.br/andrealmeida. Aula III Introdução PHP

Linguagem C: Estruturas de Controle. Prof. Leonardo Barreto Campos 1

Compiladores. Análise léxica. Plano da aula. Vocabulário básico. Motivação para análise léxica. Estrutura de um compilador

Módulo 4. Construindo uma solução OLAP

SELENIUM 28/03/2011. Márcio Delamaro Harry Trinta

Exemplos. char c; int i=67;... c= A ; c=c+1; if (c== B )... c=i; i=c; i++; if (i>= C )...

Everson Scherrer Borges João Paulo de Brito Gonçalves

Prof. Dr. Iron Macêdo Dantas

Conectando Bancos de Dados Microsoft Access no BrOffice.org Base. fornecido pelo Projeto de Documentação do BrOffice.org

Ruby. Simplicidade e produtividade

Algoritmo e Programação

Transcrição:

SEGUNDA EDIÇÃO Expressões Regulares Guia de Bolso Guia de Bolso: Expressões Regulares I

II Guia de Bolso: Expressões Regulares

Conteúdo Sobre Este Livro 1 Introdução a Expressões Regulares e Casamento de Padrões 2 Metacaracteres, Modos e Construções de Expressões Regulares 4 Suporte Unicode 14 Livro de Receitas de Expressões Regulares 14 Receitas 15 Perl 5.8 17 Metacaracteres com Suporte 17 Operadores de Expressões Regulares 24 Suporte Unicode 27 Exemplos 28 Outros Recursos 29 Java (java.util.regex) 29 Metacaracteres com Suporte 30 Interfaces e Classes de Expressões Regulares 35 Suporte Unicode 40 Exemplos 41 Outros Recursos 43.NET e C# 43 Metacaracteres com Suporte 43 Interfaces e Classes de Expressões Regulares 48 Suporte Unicode 53 Exemplos 53 Guia de Bolso: Expressões Regulares V

Outros Recursos 55 PHP 55 Metacaracteres com Suporte 56 Funções de Casamento de Padrões 61 Exemplos 63 Outros Recursos 64 Python 64 Metacaracteres com Suporte 65 Funções e Objetos de Módulo re 69 Suporte Unicode 72 Exemplos 72 Outros Recursos 74 RUBY 74 Metacaracteres com Suporte 74 Interface Orientada a Objetos 79 Suporte Unicode 84 Exemplos 84 JavaScript 85 Metacaracteres com Suporte 85 Objetos e Métodos de Casamento de Padrões 88 Exemplos 91 Outros Recursos 92 PCRE 92 Metacaracteres com Suporte 93 API PCRE 100 Suporte Unicode 101 Exemplos 103 Outros Recursos 106 VI Guia de Bolso: Expressões Regulares

Apache Web Server 107 Metacaracteres com Suporte 107 RewriteRule 111 Diretivas de combinação 114 Exemplos114 Editor vi 115 Metacaracteres com Suporte 115 Casamento de Padrões 119 Exemplos 121 Outros Recursos 121 Ferramentas Shell 121 Metacaracteres com Suporte 122 Outros Recursos 128 Guia de Bolso: Expressões Regulares VII

VIII Guia de Bolso: Expressões Regulares

Guia de Bolso de Expressões Regulares Expressões regulares é uma linguagem utilizada para manipulação e realização de parse em texto. São muitas vezes usadas para desempenhar complexas operações de pesquisa e substituição, além de validar que os dados do texto são bem formados. Hoje em dia, expressões regulares são incluídas na maioria das linguagens de programação, assim como em muitas ferramentas de linha de comando, bases de dados, aplicações, editores e linguagens de script. Este livro tem como objetivo dar um acesso rápido à sintaxe e a operações de casamento de padrões mais populares destas linguagens, de modo que seja possível aplicar seu conhecimento de expressões regulares em qualquer ambiente. A segunda edição deste livro acrescenta seções sobre Ruby e Apache web server, expressões regulares comuns, além de atualizar linguagens existentes. Sobre Este Livro Este livro inicia com uma introdução geral às expressões regulares. A primeira seção descreve e define as construções utilizadas em expressões regulares e estabelece os princípios comuns de casamento de padrões. As demais seções do livro são dedicadas à sintaxe, funcionalidades e uso de expressões regulares em várias implementações. As implementações abordadas neste livro são Perl, Java,.NET, C#, Ruby, Python, PCRE, PHP, Apache web server, editor vi, JavaScript e ferramentas shell. Convenções Utilizadas Neste Livro As seguintes convenções tipográficas são utilizadas neste livro: Itálico Utilizado para a ênfase, termos novos, nomes de programa e URLs Guia de Bolso: Expressões Regulares IX

Fonte Courrier New itálico Utilizado para o texto que deva ser substituído com os valores fornecidos pelo usuário Fonte Courrier New negrito Usado nos exemplos para comandos ou outro texto que deva ser digitado literalmente pelo usuário Agradecimentos Mastering Regular Expressions (Dominando Expressões Regulares), de Jeffrey E. F. Friedl (O Reilly), é o trabalho definitivo sobre expressões regulares. Ao escrever, confiei de maneira expressiva em seu livro e recomendação. Por conveniência, este livro fornece referências de páginas para Mastering Regular Expressions (Dominando Expressões Regulares), Terceira Edição (MRE), para a discussão expandida da sintaxe e conceitos de expressões regulares. Nat Torkington e Linda Mui foram os excelentes editores que me direcionaram ao constatarem ser uma complicada primeira edição. Esta edição foi auxiliada pelas ótimas habilidades editoriais de Andy Oram. Sarah Burcham merece agradecimentos especiais por me dar a oportunidade de escrever este livro e por suas contribuições à seção Ferramentas Shell. Mais agradecimentos pelas contribuições e revisões técnicas de Jeffrey Friedl, Philip Hazel, Steve Friedl, Ola Bini, Ian Darwin, Zak Greant, Ron Hitchens, A.M. Kuchling, Tim Allwine, Schuyler Erle, David Lents, Rabble, Rich Bowan, Eric Eisenhart e Brad Merrill. Introdução a Expressões Regulares e Casamento de Padrões Uma expressão regular é uma string que contém uma combinação de caracteres normais e metacaracteres ou metaseqüências especiais. Os caracteres normais combinam entre si. Os metacaracteres e os metaseqüências são caracteres ou seqüências de caracteres que representam idéias como quantidade, posições ou tipos de caracteres. A lista em Construções, Modos e Metacaracteres de Expressões Regulares mostra os metacaracteres e as metaseqüências mais comuns no mundo de expressões regulares. Seções posteriores listam a disponibilidade e a X Guia de Bolso: Expressões Regulares

sintaxe para suporte de metacaracteres para implementações particulares de expressões regulares. O Casamento de padrões consiste em encontrar uma seção de texto que é descrita (combinada) por uma expressão regular. O código subjacente que pesquisa o texto é o mecanismo de expressão regular. É possível prever os resultados da maioria das combinações mantendo duas regras em mente: 1. A combinação mais precoce (mais à esquerda) vence As expressões regulares são aplicadas à entrada que começa no primeiro caractere e prossegue até o último. Assim que o mecanismo de expressões regulares encontra uma combinação, esta então retorna. (Veja MRE 148 149.) 2. Os quantificadores padrões são vorazes Os quantificadores especificam quantas vezes algo pode ser repetido. Os quantificadores padrões tentam combinar o tanto quanto possível. Estabelecem-se para menos, ao invés do máximo, somente se for necessário para o sucesso da combinação. O processo de abandonar caracteres e tentar combinações menos vorazes é chamado de retrocesso. (Veja MRE 151 153.) Os mecanismos de expressões regulares têm diferenças baseadas em seu tipo. Há duas classes de mecanismos: Autômato Finito Determinista (DFA) e Autômato Finito Não Determinista (NFA). DFAs são mais rápidos, mas não têm muitas das funcionalidades de um NFA, como captura, pesquisa e quantificadores não-vorazes. No mundo do NFA existem dois tipos: tradicional e POSIX. Mecanismos de DFA Os DFAs comparam cada caractere da string de entrada para a expressão regular, mantendo o rastreamento de todas as combinações em progresso. Como cada caractere é examinado no máximo uma vez, o mecanismo de DFA é o mais rápido. Uma regra adicional a ser lembrada com DFAs é que a metaseqüência de alternação é voraz. Quando mais de uma opção em uma alternação (foo foobar) combina, a mais longa Guia de Bolso: Expressões Regulares XI