SlideShare une entreprise Scribd logo
1  sur  27
Expressões
Regulares
Metacaracteres tipo barra-letra
Os metacaracteres do tipo barra-letra são átomos representados por uma barra
invertida  seguida de uma letra qualquer, como s e W.
Dependendo da letra, muda-se o significado desse metacaractere.
Tudo começou nas linguagens de programação com os printf da vida, que
começaram a interpretar coisas, como n e t, para significar quebra de linha e
TAB, pois visualmente é ambíguo se "1 2" é um, TAB, dois ou um, espaços, dois.
Metacaracteres tipo barra-letra
Essa representação simplificada e útil se tornou padrão e hoje a grande maioria dos
aplicativos os entende.
a alert alert(bipe)
b backspace caractere backspace
e escape catacatere ESC
d form feed alimentação
n new line nova linha
r carriage return retorno de carro
t htab tabulação horizontal
v vtab tabulação vertical
Metacaracteres tipo barra-letra
Como esses barra-letras também poderiam ser muito úteis para escrever nossas
expressões regulares, os robozinhos começaram a ter suporte a eles também, ou senão
a linguagem recebe a ER como um dado do tipo string e os interpreta, passando ao
robozinho seus valores literais.
Metacaracteres tipo barra-letra
b-l Equivalente POSIX Significa
d [[:digit:]] Dígito
D [^[:digit:]] Não-digito
w [[:alnum:]_] Palavra
W [^[:alnum:]_] Não-palavra
s [[:space:]] Branco
S [^[:space:]] Não-branco
Metacaracteres tipo barra-letra
A grande diferença desses barra-letras para as classes POSIX, é que eles são válidos
fora das listas.
Dependendo do aplicativo, eles são válidos dentro das listas também, bagunçando
aquela regra que vimos de que dentro da lista todo mundo é normal. Dependendo
também, o sublinhado faz parte ou não do w.
Exemplos de expressões
dd/mm/aaaa
Expressão Math
../../.... 12/05/1987, 99/99/9999
[0-9]{2}/[0-9]{2}/[0-9]{4} 10/10/2016, 99/99/9999
[0123][0-9]/[0-9]{2}/[0-9]{4} 10/10/2016, 19/99/9999
(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/[12][0-9]{3} 10/10/2016
hh:mm
Expressão Math
..:.. 10:10, 99:99
[0-9]{2}:[0-9]{2} 10:10, 99:99
[012][0-9]:[0-5][0-9] 10:10
([01][0-9]|2[0-3]):[0-5][0-9] 10:10
usu@dom.zz
Expressão Math
.*@.* usuario@email.com, usuario@,
usuario@email
[A-Za-z0-9_.-]+@([A-Za-z0-9_]+.)+[A-Za-z]{2,4} usuario@email.com
telefone celular - xxxxx-xxxx
Expressão Math
…..-.... 99999-9999, aaaaa-bbbb
[0-9]{5}-[0-9]{4} 99999-9999
Regex engine - Baseadas em autômatos
finitos
Processam mais rápido
Criam uma máquina de estado, alimentando-a com os caracteres de entrada.
Aplicações
Posix / GNU ERE / BRE - Usado na maioria dos utilitários Unix, como grep, sed e awk.
RE2 - Um projeto relativamente novo para tentar dar mais poder para o método baseado em autômatos.
Regex engine - Baseados em back-tracking
Compila o padrão em byte-code, semelhante a instruções da máquina.
O mecanismo então executa o código, saltando de instrução à instrução.
Aplicações:
Perl - O original. A maioria dos outros motores deste tipo tentam replicar a funcionalidade de regexes na
linguagem Perl.
PCRE - A implementação mais bem sucedida. Esta biblioteca é a implementação mais amplamente utilizada.
Ele tem um rico conjunto de recursos, alguns dos quais não podem ser considerados como "Regular"
mais.
Funcionamento do engine
[a-z]
[a-z]*
[a-z]+
([0-9]{2})/([0-9]{2})/([0-9]{4})
Funcionamento do engine
(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/[12][0-9]{3}
[0-9]{3}.?[0-9]{3}.?[0-9]{3}-?[0-9]{2}
PHP (PCRE)
Característica Como fazer
Busca função preg_match
Substituição função preg_replace
Divisão função preg_split
ER crua 'entre aspas simples'
Ignore M/m Modificadores i (?i)
Global é o padrão
PHP (PCRE)
Funções PCRE Objetivo
preg_filter Substituição condicional
preg_grep Retorna opções de um array
preg_last_error Código de erro da última expressão executada
preg_match_all Casa globalmente e retorna o resultado
preg_match Casa e retorna o resultado
preg_quote Escapa metacaracteres
preg_replace_callback Substituição usando função
preg_replace Substituição
preg_split Divisão
Diferença entre PCRE e POSIX
As funções preg(PCRE) utilizam a biblioteca PCRE, que a partir da versão 5.3 do PHP
não pode ser desabilitada, sendo assim, estará sempre presente, essas funções
são compatíveis com estilo PERL e possuem características não disponíveis nas
funções ereg(POSIX).
A partir da versão 5.3 do PHP as funções ereg(POSIX) foram marcadas como
deprecated, ou seja, tornaram-se obsoletas e seu uso é desencorajado, além disso
toda vez que são utilizadas é lançado um notice do tipo E_DEPRECATED.
Exemplo
PHP Descrição Resultado
<?php
$cep = '22710-045';
$names = array('Diogo', 'Renato', 'Gomes', 'Thiago', 'Leonardo');
$er = '/^(d){5}-(d){3}$/';
if(preg_match($er, $cep)) {
echo "O cep casou com a expressão.";
}
$er = '/go/i';
$pregReplace = preg_replace($er, 'GO', $names);
print_r($pregReplace);
$er = '/go$/';
$pregFilter = preg_filter($er, 'GO', $names);
print_r($pregFilter);
$er = '/^go/i';
$pregGrep = preg_grep($er, $names);
print_r($pregGrep);
?>
Validação de CEP
Busca e substitui nomes que tenham "go",
case-insensitive
Busca e substitui nomes que terminam com
"go"
Resgatar nomes que começam com "go", case-
insensitive
O cep casou com a
expressão.
DioGO, Renato,
GOmes, ThiaGO,
Leonardo
DioGO, ThiaGO
Gomes
Exemplo
PHP Descrição Resultado
<?php
$names = array('Diogo', 'Renato', 'Gomes', 'Thiago', 'Leonardo');
$text = 'Lorem ipsum dolor sit amet, consectetuer adipiscing.';
$er = '/[[:punct:]s]s*/';
$pregSplit = preg_split($er, $text);
print_r($pregSplit);
$callback = function($matches) {
return strtoupper($matches[0]);
};
$er = '/(.*)go$/';
$pregCallback = preg_replace_callback($er, $callback, $names);
print_r($pregCallback);
?>
Divide o texto por pontos e espaços, que
podem ser seguidos por espaços
callback, retorna em letras maiúsculas
Busca e substitui de acordo com o callback
Array de palavras
DIOGO, Renato,
Gomes, THIAGO,
Leonardo
HTML 5
No seu site ou aplicativo Web, se você digitar o CPF é necessário verificar se foi digitado
corretamente. Como o formato é padronizado (nnn.nnn.nnn-nn), basta escrever uma
expressão regular e tentar casá-la com o texto digitado.
Veja um Exemplo utilizando JavaScript.
HTML 5
HTML 5
Funciona, mas é muito trabalhoso para fazer uma simples validação correto, imagine
possuímos mais campos para validação. ex: nome, idade, e-mail, CNPJ, url etc. Outro
problema é que a maneira de informar ao usuário sobre o erro (um alert() no exemplo)
não é padronizada, cada site faz de um jeito. Porém apesar de todos os esforços se o
usuário desativar o JavasScript, então nada funcionará.
O HTML 5 criou uma nova maneira de fazer essa validação, que é colocar a expressão
regular diretamente no campo em questão, usando o novo atributo pattern.
Veja como fica o exemplo anterior.
HTML 5
E pronto! sem JavaScript, sem evento onsubmit, sem DOM, sem alert()
resumindo, sem complicações. É o navegador que verificará se o texto digitado casa
com a expressão e, se necessário avisará o usuário que há algo errado, de maneira
padronizada. Use o atributo title para definir a mensagem que será mostrada ao
usuário em caso de erro.
HTML 5
Ferramentas para testes
http://regexr.com/
http://www.regextester.com/
http://regexstorm.net/tester
https://regex101.com/
https://www.debuggex.com/
http://regexlib.com/Search.aspx
Referências
http://www.diogomatheus.com.br/blog/php/expressoes-regulares-no-php/
http://turing.com.br/material/regex/introducao.html
http://www.devmedia.com.br/expressoes-regulares-em-php/25076
http://aurelio.net/regex/guia/
JARGAS, Aurelio Marinho. Expressões Regulares: Uma abordagem divertida. 4.ed. São Paulo: Novatec, 2012.
224p.
JARGAS, Aurelio Marinho. Expressões Regulares: Uma abordagem divertida. 3.ed. São Paulo: Novatec, 2009.
207p.

Contenu connexe

En vedette

Padrões de Projeto - Observer e Strategy
Padrões de Projeto - Observer e StrategyPadrões de Projeto - Observer e Strategy
Padrões de Projeto - Observer e StrategyJoão Carlos Ottobboni
 
Les Talents d'Alphonse se sont lancés !
Les Talents d'Alphonse se sont lancés !Les Talents d'Alphonse se sont lancés !
Les Talents d'Alphonse se sont lancés !Annelise Franch
 
Aula 10 minimizaçãode automato
Aula 10   minimizaçãode automatoAula 10   minimizaçãode automato
Aula 10 minimizaçãode automatowab030
 
Bibliographical Reference Manager
Bibliographical Reference ManagerBibliographical Reference Manager
Bibliographical Reference ManagerManuela Aparicio
 
Aula 7 expressão regular
Aula 7   expressão regularAula 7   expressão regular
Aula 7 expressão regularwab030
 
Padrões de Projeto J2EE para Aplicações Web
Padrões de Projeto J2EE para Aplicações WebPadrões de Projeto J2EE para Aplicações Web
Padrões de Projeto J2EE para Aplicações WebDenis L Presciliano
 
101545233 exercicios-resolvidos-de-sinais-e-sistemas
101545233 exercicios-resolvidos-de-sinais-e-sistemas101545233 exercicios-resolvidos-de-sinais-e-sistemas
101545233 exercicios-resolvidos-de-sinais-e-sistemasHenrique Farias
 
Free and open source software
Free and open source softwareFree and open source software
Free and open source softwareFrederik Questier
 
Tipos de Licença de Softwares
Tipos de Licença de SoftwaresTipos de Licença de Softwares
Tipos de Licença de SoftwaresLucas Castejon
 
Taxas, impostos e tributos brasileiros
Taxas, impostos e tributos brasileirosTaxas, impostos e tributos brasileiros
Taxas, impostos e tributos brasileirosFormigascommegafone
 

En vedette (13)

Padrões de Projeto - Observer e Strategy
Padrões de Projeto - Observer e StrategyPadrões de Projeto - Observer e Strategy
Padrões de Projeto - Observer e Strategy
 
Les Talents d'Alphonse se sont lancés !
Les Talents d'Alphonse se sont lancés !Les Talents d'Alphonse se sont lancés !
Les Talents d'Alphonse se sont lancés !
 
Aula 10 minimizaçãode automato
Aula 10   minimizaçãode automatoAula 10   minimizaçãode automato
Aula 10 minimizaçãode automato
 
Licenças de software
Licenças de softwareLicenças de software
Licenças de software
 
Bibliographical Reference Manager
Bibliographical Reference ManagerBibliographical Reference Manager
Bibliographical Reference Manager
 
Expressões Regulares: Teoria e Prática
Expressões Regulares: Teoria e PráticaExpressões Regulares: Teoria e Prática
Expressões Regulares: Teoria e Prática
 
Aula 7 expressão regular
Aula 7   expressão regularAula 7   expressão regular
Aula 7 expressão regular
 
Padrões de Projeto J2EE para Aplicações Web
Padrões de Projeto J2EE para Aplicações WebPadrões de Projeto J2EE para Aplicações Web
Padrões de Projeto J2EE para Aplicações Web
 
101545233 exercicios-resolvidos-de-sinais-e-sistemas
101545233 exercicios-resolvidos-de-sinais-e-sistemas101545233 exercicios-resolvidos-de-sinais-e-sistemas
101545233 exercicios-resolvidos-de-sinais-e-sistemas
 
Free and open source software
Free and open source softwareFree and open source software
Free and open source software
 
Padrões de Projeto - Design Patterns
Padrões de Projeto - Design PatternsPadrões de Projeto - Design Patterns
Padrões de Projeto - Design Patterns
 
Tipos de Licença de Softwares
Tipos de Licença de SoftwaresTipos de Licença de Softwares
Tipos de Licença de Softwares
 
Taxas, impostos e tributos brasileiros
Taxas, impostos e tributos brasileirosTaxas, impostos e tributos brasileiros
Taxas, impostos e tributos brasileiros
 

Similaire à Expressões Regulares: Metacaracteres tipo barra-letra

JavaScript - Aula Introdutória
JavaScript - Aula IntrodutóriaJavaScript - Aula Introdutória
JavaScript - Aula Introdutórialucasleite
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem Capolllorj
 
Algoritmo e Complexidade - texto Aula1.docx
Algoritmo e Complexidade - texto Aula1.docxAlgoritmo e Complexidade - texto Aula1.docx
Algoritmo e Complexidade - texto Aula1.docxLdiaSilva39
 
CakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroCakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroJuan Basso
 
Programação desktop - apresentação
Programação desktop -  apresentaçãoProgramação desktop -  apresentação
Programação desktop - apresentaçãoRosicleia Frasson
 
Fundamentos de SQL - Parte 1 de 8
Fundamentos de SQL - Parte 1 de 8Fundamentos de SQL - Parte 1 de 8
Fundamentos de SQL - Parte 1 de 8Emiliano Barbosa
 
Linguagem de Programação PERL
Linguagem de Programação PERLLinguagem de Programação PERL
Linguagem de Programação PERLTiago R. Sampaio
 
Apostila de-introdução-à-linguagem-c
Apostila de-introdução-à-linguagem-cApostila de-introdução-à-linguagem-c
Apostila de-introdução-à-linguagem-cMaicon Rodrigues
 
Manual-de-php
Manual-de-phpManual-de-php
Manual-de-phpdiogoa21
 
Programar Em Pascal
Programar Em PascalProgramar Em Pascal
Programar Em PascalPepe Rocker
 
Sobre code smells, refactoring e design: como SOLID pode te ajudar no dia a dia
Sobre code smells, refactoring e design: como SOLID pode te ajudar no dia a diaSobre code smells, refactoring e design: como SOLID pode te ajudar no dia a dia
Sobre code smells, refactoring e design: como SOLID pode te ajudar no dia a diaElaine Naomi
 
Estrutura de linguagem C++
Estrutura de linguagem C++Estrutura de linguagem C++
Estrutura de linguagem C++Verônica Veiga
 
Algoritmos e Lógica de Programação
Algoritmos e Lógica de ProgramaçãoAlgoritmos e Lógica de Programação
Algoritmos e Lógica de ProgramaçãoJose Augusto Cintra
 

Similaire à Expressões Regulares: Metacaracteres tipo barra-letra (20)

JavaScript - Aula Introdutória
JavaScript - Aula IntrodutóriaJavaScript - Aula Introdutória
JavaScript - Aula Introdutória
 
Introdução a Linguagem C
Introdução a Linguagem CIntrodução a Linguagem C
Introdução a Linguagem C
 
Algoritmo e Complexidade - texto Aula1.docx
Algoritmo e Complexidade - texto Aula1.docxAlgoritmo e Complexidade - texto Aula1.docx
Algoritmo e Complexidade - texto Aula1.docx
 
CakePHP com sotaque brasileiro
CakePHP com sotaque brasileiroCakePHP com sotaque brasileiro
CakePHP com sotaque brasileiro
 
Programação desktop - apresentação
Programação desktop -  apresentaçãoProgramação desktop -  apresentação
Programação desktop - apresentação
 
Fundamentos de SQL - Parte 1 de 8
Fundamentos de SQL - Parte 1 de 8Fundamentos de SQL - Parte 1 de 8
Fundamentos de SQL - Parte 1 de 8
 
JavaScript
JavaScriptJavaScript
JavaScript
 
Linguagem de Programação PERL
Linguagem de Programação PERLLinguagem de Programação PERL
Linguagem de Programação PERL
 
Macro br
Macro brMacro br
Macro br
 
Java2
Java2Java2
Java2
 
Curso java script
Curso java scriptCurso java script
Curso java script
 
apostila matlab
apostila matlabapostila matlab
apostila matlab
 
Apostila de-introdução-à-linguagem-c
Apostila de-introdução-à-linguagem-cApostila de-introdução-à-linguagem-c
Apostila de-introdução-à-linguagem-c
 
Manual-de-php
Manual-de-phpManual-de-php
Manual-de-php
 
Revista programar 6
Revista programar 6Revista programar 6
Revista programar 6
 
Programar Em Pascal
Programar Em PascalProgramar Em Pascal
Programar Em Pascal
 
Introd aplicjava
Introd aplicjavaIntrod aplicjava
Introd aplicjava
 
Sobre code smells, refactoring e design: como SOLID pode te ajudar no dia a dia
Sobre code smells, refactoring e design: como SOLID pode te ajudar no dia a diaSobre code smells, refactoring e design: como SOLID pode te ajudar no dia a dia
Sobre code smells, refactoring e design: como SOLID pode te ajudar no dia a dia
 
Estrutura de linguagem C++
Estrutura de linguagem C++Estrutura de linguagem C++
Estrutura de linguagem C++
 
Algoritmos e Lógica de Programação
Algoritmos e Lógica de ProgramaçãoAlgoritmos e Lógica de Programação
Algoritmos e Lógica de Programação
 

Plus de Jackson Veroneze

Plus de Jackson Veroneze (11)

Angular 4 - Introdução
Angular 4 - IntroduçãoAngular 4 - Introdução
Angular 4 - Introdução
 
Regex javascript
Regex   javascriptRegex   javascript
Regex javascript
 
Map, filter e reduce
Map, filter e reduceMap, filter e reduce
Map, filter e reduce
 
Integração Contínua
Integração ContínuaIntegração Contínua
Integração Contínua
 
Expressões Regulares - Introdução
Expressões Regulares - IntroduçãoExpressões Regulares - Introdução
Expressões Regulares - Introdução
 
GULP - Automatizador de tarefas
GULP - Automatizador de tarefasGULP - Automatizador de tarefas
GULP - Automatizador de tarefas
 
Web socket - Trazendo soquetes para a web
Web socket - Trazendo soquetes para a webWeb socket - Trazendo soquetes para a web
Web socket - Trazendo soquetes para a web
 
Conhecendo a API Geolocation
Conhecendo a API GeolocationConhecendo a API Geolocation
Conhecendo a API Geolocation
 
Vanilla js
Vanilla jsVanilla js
Vanilla js
 
Web components
Web componentsWeb components
Web components
 
Progressive apps
Progressive appsProgressive apps
Progressive apps
 

Expressões Regulares: Metacaracteres tipo barra-letra

  • 2. Metacaracteres tipo barra-letra Os metacaracteres do tipo barra-letra são átomos representados por uma barra invertida seguida de uma letra qualquer, como s e W. Dependendo da letra, muda-se o significado desse metacaractere. Tudo começou nas linguagens de programação com os printf da vida, que começaram a interpretar coisas, como n e t, para significar quebra de linha e TAB, pois visualmente é ambíguo se "1 2" é um, TAB, dois ou um, espaços, dois.
  • 3. Metacaracteres tipo barra-letra Essa representação simplificada e útil se tornou padrão e hoje a grande maioria dos aplicativos os entende. a alert alert(bipe) b backspace caractere backspace e escape catacatere ESC d form feed alimentação n new line nova linha r carriage return retorno de carro t htab tabulação horizontal v vtab tabulação vertical
  • 4. Metacaracteres tipo barra-letra Como esses barra-letras também poderiam ser muito úteis para escrever nossas expressões regulares, os robozinhos começaram a ter suporte a eles também, ou senão a linguagem recebe a ER como um dado do tipo string e os interpreta, passando ao robozinho seus valores literais.
  • 5. Metacaracteres tipo barra-letra b-l Equivalente POSIX Significa d [[:digit:]] Dígito D [^[:digit:]] Não-digito w [[:alnum:]_] Palavra W [^[:alnum:]_] Não-palavra s [[:space:]] Branco S [^[:space:]] Não-branco
  • 6. Metacaracteres tipo barra-letra A grande diferença desses barra-letras para as classes POSIX, é que eles são válidos fora das listas. Dependendo do aplicativo, eles são válidos dentro das listas também, bagunçando aquela regra que vimos de que dentro da lista todo mundo é normal. Dependendo também, o sublinhado faz parte ou não do w.
  • 8. dd/mm/aaaa Expressão Math ../../.... 12/05/1987, 99/99/9999 [0-9]{2}/[0-9]{2}/[0-9]{4} 10/10/2016, 99/99/9999 [0123][0-9]/[0-9]{2}/[0-9]{4} 10/10/2016, 19/99/9999 (0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/[12][0-9]{3} 10/10/2016
  • 9. hh:mm Expressão Math ..:.. 10:10, 99:99 [0-9]{2}:[0-9]{2} 10:10, 99:99 [012][0-9]:[0-5][0-9] 10:10 ([01][0-9]|2[0-3]):[0-5][0-9] 10:10
  • 10. usu@dom.zz Expressão Math .*@.* usuario@email.com, usuario@, usuario@email [A-Za-z0-9_.-]+@([A-Za-z0-9_]+.)+[A-Za-z]{2,4} usuario@email.com
  • 11. telefone celular - xxxxx-xxxx Expressão Math …..-.... 99999-9999, aaaaa-bbbb [0-9]{5}-[0-9]{4} 99999-9999
  • 12. Regex engine - Baseadas em autômatos finitos Processam mais rápido Criam uma máquina de estado, alimentando-a com os caracteres de entrada. Aplicações Posix / GNU ERE / BRE - Usado na maioria dos utilitários Unix, como grep, sed e awk. RE2 - Um projeto relativamente novo para tentar dar mais poder para o método baseado em autômatos.
  • 13. Regex engine - Baseados em back-tracking Compila o padrão em byte-code, semelhante a instruções da máquina. O mecanismo então executa o código, saltando de instrução à instrução. Aplicações: Perl - O original. A maioria dos outros motores deste tipo tentam replicar a funcionalidade de regexes na linguagem Perl. PCRE - A implementação mais bem sucedida. Esta biblioteca é a implementação mais amplamente utilizada. Ele tem um rico conjunto de recursos, alguns dos quais não podem ser considerados como "Regular" mais.
  • 16. PHP (PCRE) Característica Como fazer Busca função preg_match Substituição função preg_replace Divisão função preg_split ER crua 'entre aspas simples' Ignore M/m Modificadores i (?i) Global é o padrão
  • 17. PHP (PCRE) Funções PCRE Objetivo preg_filter Substituição condicional preg_grep Retorna opções de um array preg_last_error Código de erro da última expressão executada preg_match_all Casa globalmente e retorna o resultado preg_match Casa e retorna o resultado preg_quote Escapa metacaracteres preg_replace_callback Substituição usando função preg_replace Substituição preg_split Divisão
  • 18. Diferença entre PCRE e POSIX As funções preg(PCRE) utilizam a biblioteca PCRE, que a partir da versão 5.3 do PHP não pode ser desabilitada, sendo assim, estará sempre presente, essas funções são compatíveis com estilo PERL e possuem características não disponíveis nas funções ereg(POSIX). A partir da versão 5.3 do PHP as funções ereg(POSIX) foram marcadas como deprecated, ou seja, tornaram-se obsoletas e seu uso é desencorajado, além disso toda vez que são utilizadas é lançado um notice do tipo E_DEPRECATED.
  • 19. Exemplo PHP Descrição Resultado <?php $cep = '22710-045'; $names = array('Diogo', 'Renato', 'Gomes', 'Thiago', 'Leonardo'); $er = '/^(d){5}-(d){3}$/'; if(preg_match($er, $cep)) { echo "O cep casou com a expressão."; } $er = '/go/i'; $pregReplace = preg_replace($er, 'GO', $names); print_r($pregReplace); $er = '/go$/'; $pregFilter = preg_filter($er, 'GO', $names); print_r($pregFilter); $er = '/^go/i'; $pregGrep = preg_grep($er, $names); print_r($pregGrep); ?> Validação de CEP Busca e substitui nomes que tenham "go", case-insensitive Busca e substitui nomes que terminam com "go" Resgatar nomes que começam com "go", case- insensitive O cep casou com a expressão. DioGO, Renato, GOmes, ThiaGO, Leonardo DioGO, ThiaGO Gomes
  • 20. Exemplo PHP Descrição Resultado <?php $names = array('Diogo', 'Renato', 'Gomes', 'Thiago', 'Leonardo'); $text = 'Lorem ipsum dolor sit amet, consectetuer adipiscing.'; $er = '/[[:punct:]s]s*/'; $pregSplit = preg_split($er, $text); print_r($pregSplit); $callback = function($matches) { return strtoupper($matches[0]); }; $er = '/(.*)go$/'; $pregCallback = preg_replace_callback($er, $callback, $names); print_r($pregCallback); ?> Divide o texto por pontos e espaços, que podem ser seguidos por espaços callback, retorna em letras maiúsculas Busca e substitui de acordo com o callback Array de palavras DIOGO, Renato, Gomes, THIAGO, Leonardo
  • 21. HTML 5 No seu site ou aplicativo Web, se você digitar o CPF é necessário verificar se foi digitado corretamente. Como o formato é padronizado (nnn.nnn.nnn-nn), basta escrever uma expressão regular e tentar casá-la com o texto digitado. Veja um Exemplo utilizando JavaScript.
  • 23. HTML 5 Funciona, mas é muito trabalhoso para fazer uma simples validação correto, imagine possuímos mais campos para validação. ex: nome, idade, e-mail, CNPJ, url etc. Outro problema é que a maneira de informar ao usuário sobre o erro (um alert() no exemplo) não é padronizada, cada site faz de um jeito. Porém apesar de todos os esforços se o usuário desativar o JavasScript, então nada funcionará. O HTML 5 criou uma nova maneira de fazer essa validação, que é colocar a expressão regular diretamente no campo em questão, usando o novo atributo pattern. Veja como fica o exemplo anterior.
  • 24. HTML 5 E pronto! sem JavaScript, sem evento onsubmit, sem DOM, sem alert() resumindo, sem complicações. É o navegador que verificará se o texto digitado casa com a expressão e, se necessário avisará o usuário que há algo errado, de maneira padronizada. Use o atributo title para definir a mensagem que será mostrada ao usuário em caso de erro.
  • 27. Referências http://www.diogomatheus.com.br/blog/php/expressoes-regulares-no-php/ http://turing.com.br/material/regex/introducao.html http://www.devmedia.com.br/expressoes-regulares-em-php/25076 http://aurelio.net/regex/guia/ JARGAS, Aurelio Marinho. Expressões Regulares: Uma abordagem divertida. 4.ed. São Paulo: Novatec, 2012. 224p. JARGAS, Aurelio Marinho. Expressões Regulares: Uma abordagem divertida. 3.ed. São Paulo: Novatec, 2009. 207p.