A intenção deste post é organizar num lugar as principais e mais simples características das expressões regulares. Desta forma serve tanto para quem está começando para quem deseja consultar.
Então, vamos lá!
O que são expressões regulares?
São conjutos de caracteres e símbolos que, quando agrupados corretamente, formam uma expressão.
"É como o brinquedo LEGO, várias pecinhas diferentes, cada uma com sua característica, que juntas compõem estruturas completas e podem ser arranjadas com infinitas combinações diferentes." guia-er
Para que servem?
Expressões regulares ajudam a você definir padrões mais específicos que te ajudarão a buscar e/ou alterar em um contexto mais abrangente.
Exemplo
[rpg]ato combinará com: gato, rato e pato.
Mas expressões vão muito além disto, no dia-a-dia seu uso é muito prática para manipular diversos dados como: data/hora, endereço de email, telefones, cpf, conteudos de , praticamente qualquer coisa!
Mãos a massa!
Metacaracteres
| Representantes | Definição | Exemplos | ||
|---|---|---|---|---|
| . | ponto | Um caractere qualquer | Casa com qualquer coisa, inclusive com si próprio | n.o = não, nao, ... 13.15 = 13:15, 13 15, 13.15 |
| [] | lista | [...] - Lista de caracteres permitidos | Casa quem quem conhece. Dentro da lista, todo mundo é "normal". - significa intervalo | [0123456789] = [0-9] n[ãa]o = não, nao a-z, A-Z pega "[\]^_" mas não pega os caracteres acentuados "aéóõç". |
| [^] | lista negada | [^...] - Lista de caracteres proibidos | Segue todas as regras de uma lista "comum" ^ não deve ser o primeiro item da lista. A lista negava deve casar algo | [^0-9] casa tudo que não for número, inclusive espaços em branco, símbolos, letras, qualquer coisa. |
| Quantificadores | Indicam o número de repetições permitidas para a entidade anterior | exemplos | ||
| ? | opcional | zero ou um | Torna o caracter anterior opcional é util para procurar palavras no singular e pluar | carros? carro, carros |
| * | asterisco | zero, um ou mais | A entidade anterior pode aparecer em qualquer quantidade. | 6*0 = 0, 60, 660, 6660, ..., 66666666666666660, ... |
| + | mais | um ou mais | Funcionamento idêntico ao *, a única diferença é que o + não é opcional. A entidade anterior tem que casar pelo menos uma vez. | 6+0 = 60, 660, ..., 666666666660, ... bi+p = bip, biip, biiip, biiiip, ... |
| {n,m} | chaves | de n até m | Solução controlada para especificar exatamente quantas repetições se deseja da entidade anterior Você pode especificar um úmero exato, um mínimo, um máximo ou uma faixa numérica. | {1,5} = de 1 a 5 {5,} = pelo menos 5 {3} = exatamente 3 |
| Âncoras | Caracteres que marcam uma posição específica na linha | Exemplos | ||
| ^ | circunflexo | Marca início de uma linha. ^Só tem esta função no começo da linha. | ^[0-9] = O primeiro item da linha deve ser um número | |
| $ | cifrão | fim da linha | ^$ Linha vazia ^.{10,20}$ = Linha que tenha entre 10 e 20 caracteres | |
| \b | borda | início ou fim de uma palavra | O conceito "palavra" engloba letras, número e sublinhado | dia = dia, diafragma, melodia, bom-dia \bdia = dia, diafragma, bom-dia dia\b = dia, melodia, bom-dia \bdia\b = dia, bom-dia |
| Outros | Exemplos | |||
| \ | escape | torna literal o caractere literal | \* = [*] = asterisco literal \. = . \\ = \ | |
| | | ou | um ou outro | .[php|html] | |
| () | grupo | delimitador de um grupo | (ha!)+ ha!, ha!ha!, ha!ha!ha!, ... (super|hiper)mercado | |
| \1 | retrovisor | \1...\9 - Texto casado nos grupos 1...9 | (quero-\1) quero-quero ([A-Za-z]+)-\1 (lenta)(mente) é \2 \1 lentamente é mente lenta | |
Todo conteúdo acima foi inspirado no livro e site abaixo. Quem se interessar corra atrás, compre o livre, porque vale muito a pena!
http://guia-er.sourceforge.net/
