
Segue um resumo tipo cheat sheet para referência rápida sobre o uso de Expressões Regulares no Python.
Grupos de Caracteres
Padrão |
casa com |
\w |
uma palavra comsposta de caracteres a-z, A-Z, 0-9 e sublinhado (_ ) |
\d |
umúnico dígito 0-9 |
\s |
um espaço em branco incluindo \t , \n e \r |
. |
qualquer caracter exceto quebra de linha |
\W |
qualquer sinal exceto caracter alfanumérico e sublinhado |
\D |
qualquer caracter exceto um dígito |
\S |
qualquer caracter exceto um espaço em branco |
Âncoras
Padrão |
significa |
^ |
início de uma string |
$ |
fim de uma string |
\b |
posição definida como limite de palavra |
\B |
posição definida como não sendo limite de palavra |

Quantificadores
Na tabela abaixo chamamos de “quantificadores gulosos” ou greedy, aqueles que englobam a maior parte de texto possível casando o padrão. Já os “quantificadores não gulosos” ou lazy, englobam a menor parte de texto que satisfaz o padrão.
Quantificadores gulosos |
quantificadores não gulosos |
casa com |
* |
*? |
o elemento precedente zero ou mais vezes |
+ |
+? |
o elemento precedente uma ou mais vezes |
? |
?? |
o elemento precedente zero ou uma vez |
{n} |
{n}? |
o elemento precedente exatamente n vezes |
{n, } |
{n,}? |
o elemento precedente pelo menos n vezes |
{n, m} |
{n, m}? |
o elemento precedente de n até m vezes |

Conjunto e Faixas
Chamamos de faixas
as ranges
ou regiões delimitadas de um certo conjunto.
Padrão |
casa com |
[XYZ] |
qualquer um dos elementos X, Y ou Z |
[X-Y] |
elementos na faixa de X até Y |
[^XYZ] |
qualquer elemento exceto X, Y ou Z |
[^X-Y] |
qualquer elemento exceto aqueles na faixa de X até Y |
Capturando Grupos
Padrão |
significa |
(X) |
Captura X como um grupo |
(?P<nome>X) |
Captura X e atribui a ele o nome |
\N |
Referencia o grupo capturado #N |
\g<N> |
sintaxe alternativa para referenciar o grupo capturado #N |
X | Y |
casa X ou Y |
(X) | (Y) |
casa o grupo (X) ou (Y) |
Retrovisores
Em inglês se usa as expressões lookaround, lookbehind e lookafter para significar a busca por padrões dadas condições antes e depois do padrão regex. Chamaremos aui essas expressões de retrovisores.
Padrão |
significa |
X(?=Y) |
casa com X se seguido por Y |
X(?!Y) |
casa com X se não for imediatamente seguido por Y |
(?<=Y)X
|
casa com X se precedido por Y |
(?<!Y)X
|
casa com X se não precedido por Y |
Funções Regex
São funções do módulo re
:
re.fullmatch()
retorna um objeto Match se o padrão casa com a string inteira
Método |
retorna |
re.search(padrao, texto) |
1º texto casado e sua posição, em qualquer parte do texto e em todas as linhas, |
re.match(padrao, texto) |
1º texto casado e sua posição, no início do texto e apenas na 1ª linha, |
re.findall(padrao, texto) |
retorna uma lista com todos os trechos encontrados, |
re.finditer() |
retorna um iterador com todos os trechos encontrados, não superpostos |
re.split(padrao, texto) |
parte o texto na ocorrência do padrão e retorna as partes, |
re.sub(padrao, sub, texto) |
substitue em texto o padrao por sub, |
re.subn(padrao, texto) |
similar à sub mas retorna tupla com nova string e número de substituições |
re.compile(padrao) |
compila e retorna um padrão regex pre-compilado |
Flags ou sinalizadores Regex
Flag |
alias |
flag inline |
significado |
re.ASCII |
re.A |
?m |
essa flag só é relevante para padrões em bytes†. Ele faz com que \w , \W ,\b , \B , \d , \D e \S casem com ASCII caracteres apenas, ao invés do casamento com Unicode. |
re.DEBUG |
N/A |
N/A |
a flag re.DEBUG provoca a exibição da informação de debug para o padrão compilado. |
re.IGNORECASE |
re.I |
?i |
faz busca independentemente do caso (maiúsculas/minúsculas). Portanto o padrão [A-Z] casa caracteres [a-Z] ou [a-z]. |
re.LOCALE |
re.L |
?L |
só é relevante em padrões de bytes. Faz com que \w , \W , \b , \B e casamentos sensíveis ao caso dependente do locale do computador. Essa flag não é compatível com a flag re.ASCII flag. |
re.MUTILINE |
re.M |
?m |
essa flag faz com que as marcações ^ /$ casem texto no início/final de cada linha em texto multi-linhas. |
re.DOTALL |
re.S |
?s |
essa flag faz com que o ponto (. ) case todos as caracteres, inclusive newline. (Por default a marcação de ponto (. ) casa qualquer caracter exceto newline). |
re.VERBOSE |
re.X |
?x |
essa flag permite que o padrão seja organizado em seções logicas, incluido a inserção de comentários. |

Bibliografia