Aprenda de maneira bem objetiva como criar expressões regulares. Este é um conhecimento extremamente útil em diversas áreas da computação como busca em arquivos, banco de dados, regras de validação, regras de endereçamento e tantas outras aplicações
4. Substring
Expressões Regulares fazem busca de substrings.
Por pardrão, é sensível a maiúsculas e minúsculas
re.search("ab", "aaabaaa") # True
re.search("zz", "aaabaaa") # False
re.search("AB", "aaabaaa") # False
re.search("Globo", "Globo.com") # True
5. Conjunto de Caracteres
[ ] : Define um conjunto de caracteres
- : Definir um intervalo de símbolos dentro do []
[abc] # Procura as letras 'a', 'b' ou 'c'
[,|] # Procura os símbolos ',' ou '|'
[1234] # Procura os numerais 1, 2, 3 ou 4
[0-9] # Procura por números
[a-z] # Procura por letras
[a-zA-Z0-9] # Procura por letras maiúsculas,
# minúsculas e números
6. Posição dos Caracteres
^ - Início da string
$ - Final da string
^a # string começa por a
^[a-z] # string começa por uma letra
[0-9]$ # termina por um número
^[0-9]$ # string contem apenas um número
^R[0-9] # começa pela letra 'R' seguida de um número
^$ # string vazia
7. Repetições
* - 0 ou mais repetições
+ - 1 ou mais repetições (pelo menos uma)
? - 0 ou nenhuma repetição
a*b # 'b' precedido ou não por vários 'a'
("b", "ab", "aab", "aaaab"...)
a[0-9]+ # 'a' seguido de pelo menos 1 número
-?[0-9] # um número precedido ou não por '-'
[a-z]+[,.!]? # Pelo menos 1 letra seguida ou não
pelos símbolos ',' ou '.' ou '?'
8. Quantidade de repetições
{n,m} - no mínimo n, no máximo m repetições
{n} - exatamente n repetições
{n,} - no mínimo n repetições
{,m} - até m repetições
[0-9]{2} # 2 dígitos
[a-z]{2,4} # no mínimo 2, no máximo 4 letras
R[0-9]{2,} # letra R seguida de pelo menos 2 dígitos
{0,} # o mesmo que *
{1,} # o mesmo que +
{0,1} # o mesmo que ?
9. Agrupamento em blocos
() - Agrupa parte da regra
nome(<br/>)? # palavra nome seguida ou não de <br/>
( ?[0-9])+ # lista de números
10. Conjuntos especiais
. - Para se referir a qualquer símbolo
[^] - Todos os símbolos menos os listados
<p>.+</p> # uma tag de parágrafo não vazia
http://techtudo.com.br/[^/]+/plantao/2.html
# path entre o domínio e a pasta /plantão
não pode ter /
11. Alternativa
| - Alterna entre 2 ou mais expressões dentro de ()
(avi|mpg)$ # Termina por avi ou mpg
(0?[1-9]|[1-2][0-9]|3[0-1]) # Número de 0 a 31
12. Escape
- Elimina a natureza especial de um símbolo
.jpg$ # termina pelo símbolo "." seguido de jpg
([0-9]+) # um número cercado por ()
13. Módulo re do Python
import re
match = re.search("[0-9]", "notas: 7, 3, 6")
match.group(0) # 7
match.group(1) # IndexError
match = re.findall("[0-9]", "notas: 7, 3, 6")
match # [7, 3, 6] (uma lista)
re.split("[,;]", "aa,b;cc") # ["aa", "b", "cc"]
pattern = re.compile("$ [0-9]+")
pattern.match("$ 31")
pattern.match("$ 452")
14. Sequências especiais
d - equivalente a [0-9]
D - equivalente a [^0-9]
s - caracteres de espaço [ tnrfv]
w - equivalente a [a-zA-Z0-9_]
W - equivalente a [^a-zA-Z0-9_]
d,d # número com vírgula
w(.w)* # palavra seguida de 0 ou mais .palavra