re — expressões regulares simples¶
Este módulo implementa operações de expressões regulares. A sintaxe de expressões regulares suportada é um subconjunto do módulo re do CPython (e na verdade é um subconjunto das expressões regulares estendidas do POSIX).
Os operadores e sequências especiais suportados são:
.Corresponde a qualquer caractere.
[...]Corresponde a um conjunto de caracteres. São suportados caracteres individuais e intervalos, incluindo conjuntos negados (por exemplo,
[^a-c]).^Corresponde ao início da string.
$Corresponde ao final da string.
?Corresponde a zero ou uma ocorrência do subpadrão anterior.
*Corresponde a zero ou mais ocorrências do subpadrão anterior.
+Corresponde a uma ou mais ocorrências do subpadrão anterior.
??Versão não gulosa de
?, corresponde a zero ou um, com preferência por zero.*?Versão não gulosa de
*, corresponde a zero ou mais, com preferência pela menor correspondência.+?Versão não gulosa de
+, corresponde a um ou mais, com preferência pela menor correspondência.|Corresponde ao subpadrão do lado esquerdo ou ao do lado direito deste operador.
(...)Agrupamento. Cada grupo é de captura (a substring que ele captura pode ser acessada com o método
match.group()).(?:...)Agrupamento sem captura. Cada grupo é correspondido usando as mesmas regras do agrupamento normal, mas não fará parte do objeto de correspondência.
\dCorresponde a um dígito. Equivalente a
[0-9].\DCorresponde a um não dígito. Equivalente a
[^0-9].\sCorresponde a um espaço em branco. Equivalente a
[ \t-\r].\SCorresponde a um caractere que não seja espaço em branco. Equivalente a
[^ \t-\r].\wCorresponde a “caracteres de palavra” (somente ASCII). Equivalente a
[A-Za-z0-9_].\WCorresponde a caracteres que não sejam “caracteres de palavra” (somente ASCII). Equivalente a
[^A-Za-z0-9_].\Caractere de escape. Qualquer outro caractere após a contrabarra, exceto os listados acima, é tratado literalmente. Por exemplo,
\*é equivalente ao literal*(não tratado como o operador*). Observe que\r,\n, etc. não são tratados de forma especial e serão equivalentes às letras literaisr,n, etc. Por causa disso, não é recomendado usar strings raw do Python (r"") para expressões regulares. Por exemplo,r"\r\n"quando usado como expressão regular é equivalente a"rn". Para corresponder ao caractere CR seguido de LF, use"\r\n".
NÃO SUPORTADO:
repetições contadas (
{m,n})grupos nomeados (
(?P<name>...))asserções mais avançadas (
\b,\B)escapes de caracteres especiais como
\r,\n- use o escape próprio do Python em vez dissoetc.
Exemplo:
import re
# As re doesn't support escapes itself, use of r"" strings is not
# recommended.
regex = re.compile("[\r\n]")
regex.split("line1\rline2\nline3\r\n")
# Result:
# ['line1', 'line2', 'line3', '', '']
Funções¶
- re.compile(regex_str: str, flags: int = 0) 'regex'¶
Compila a expressão regular e retorna um objeto regex.
- re.search(regex_str: str, string: str) 'match | None'¶
Compila regex_str e o procura em uma string. Diferente de
match, isto procura na string a primeira posição que corresponde à regex (que ainda pode ser 0 se a regex estiver ancorada).
- re.sub(regex_str: str, replace: str | Callable, string: str, count: int = 0, flags: int = 0, /) str¶
Compila regex_str e o procura em string, substituindo todas as correspondências por replace e retornando a nova string.
replace pode ser uma string ou uma função. Se for uma string, então sequências de escape da forma
\<number>e\g<number>podem ser usadas para expandir para o grupo correspondente (ou uma string vazia para grupos sem correspondência). Se replace for uma função, então ela deve receber um único argumento (a correspondência) e deve retornar uma string de substituição.Se count for especificado e for diferente de zero, então a substituição parará após esse número de substituições ser realizado. O argumento flags é ignorado.
Objetos regex¶
Expressão regular compilada. Instâncias desta classe são criadas usando re.compile().
- class re.regex
Objeto de expressão regular compilada retornado por
re.compile().- match(string: str, pos: int = 0, endpos: int | None = None) 'match | None'¶
Aplica esta regex compilada a string, ancorada no início da região de busca, e retorna um objeto
match, ouNonese a regex não corresponder. Este é o equivalente, para padrão compilado, dematchno nível do módulo, e é muito mais eficiente quando o mesmo padrão é aplicado a várias strings.O parâmetro opcional pos fornece um índice em string onde a busca deve começar; o padrão é
0. Isto não é completamente equivalente a fatiar a string; o caractere de padrão'^'corresponde no início real da string e em posições logo após uma quebra de linha, mas não necessariamente no índice onde a busca deve começar.O parâmetro opcional endpos limita até onde string é pesquisada; será como se a string tivesse endpos caracteres de comprimento, de modo que apenas os caracteres de pos até
endpos - 1são pesquisados. Se endpos forNone(o padrão), toda a string é pesquisada.
- search(string: str, pos: int = 0, endpos: int | None = None) 'match | None'¶
Percorre string procurando a primeira localização onde esta regex compilada produz uma correspondência, e retorna um objeto
match, ouNonese nenhuma posição corresponder. Este é o equivalente, para padrão compilado, da funçãosearch()no nível do módulo, e é muito mais eficiente quando o mesmo padrão é aplicado a várias strings.O parâmetro opcional pos fornece um índice em string onde a busca deve começar; o padrão é
0. Isto não é completamente equivalente a fatiar a string; o caractere de padrão'^'corresponde no início real da string e em posições logo após uma quebra de linha, mas não necessariamente no índice onde a busca deve começar.O parâmetro opcional endpos limita até onde string é pesquisada; será como se a string tivesse endpos caracteres de comprimento, de modo que apenas os caracteres de pos até
endpos - 1são pesquisados. Se endpos forNone(o padrão), toda a string é pesquisada.
- sub(replace: str | Callable, string: str, count: int = 0, flags: int = 0, /) str¶
Procura esta regex compilada em string, substituindo todas as correspondências por replace, e retorna a nova string. Este é o equivalente, para padrão compilado, da função
sub()no nível do módulo, e é muito mais eficiente quando o mesmo padrão é aplicado a várias strings.replace pode ser uma string ou uma função. Se for uma string, então sequências de escape da forma
\<number>e\g<number>podem ser usadas para expandir para o grupo correspondente (ou uma string vazia para grupos sem correspondência). Se replace for uma função, então ela deve receber um único argumento (a correspondência) e deve retornar uma string de substituição.Se count for especificado e for diferente de zero, então a substituição parará após esse número de substituições ser realizado. O argumento flags é ignorado.
Objetos de correspondência¶
Um objeto de correspondência guarda o resultado de uma correspondência bem-sucedida.
- class re.match(regex_str: str, string: str)¶
Corresponde regex_str contra string, ancorada no início da string, e retorna um objeto de correspondência, ou
Nonese não corresponder. Este é o atalho no nível do módulo:re.match(regex_str, string)é equivalente are.compile(regex_str).match(string).O mesmo objeto de correspondência também é retornado por
search(), pelos métodosregex.match()/regex.search()de padrão compilado, e é passado à função de substituição usada porsub().