Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> python

Python - Expressões Regulares

Página anteriorPróxima página
Uma expressão regular é uma sequência especial de caracteres que ajuda você a combinar ou localizar outras strings ou conjuntos de strings, usando uma sintaxe especializada mantida em um padrão. Expressões regulares são amplamente utilizadas no mundo UNIX.

O módulo Python re fornece suporte completo para expressões regulares do tipo Perl em Python. O módulo re gera a exceção re.error se ocorrer um erro ao compilar ou usar uma expressão regular.

Cobriríamos duas funções importantes, que seriam usadas para lidar com expressões regulares. Mas uma pequena coisa primeiro:Existem vários caracteres, que teriam um significado especial quando usados ​​em expressões regulares. Para evitar qualquer confusão ao lidar com expressões regulares, usaríamos Raw Strings como r'expression' .

A correspondência Função


Esta função tenta corresponder ao padrão RE para cadeia com sinalizadores opcionais .

Aqui está a sintaxe para esta função -
re.match(pattern, string, flags=0)

Aqui está a descrição dos parâmetros -
Nº Sr. Parâmetro e descrição
1
padrão

Esta é a expressão regular a ser correspondida.
2
cadeia

Esta é a string, que seria pesquisada para corresponder ao padrão no início da string.
3
bandeiras

Você pode especificar diferentes sinalizadores usando OR bit a bit (|). Estes são modificadores, que estão listados na tabela abaixo.

A re.match função retorna uma correspondência objeto em caso de sucesso, Nenhum na falha. Usamosgrupo(num) ou grupos() função de corresponder objeto para obter a expressão correspondente.
Nº Sr. Método e descrição do objeto de correspondência
1
grupo(num=0)

Este método retorna a correspondência inteira (ou número de subgrupo específico)
2
grupos()

Este método retorna todos os subgrupos correspondentes em uma tupla (vazio se não houver nenhum)

Exemplo

Demonstração ao vivo
#!/usr/bin/python
import re

line = "Cats are smarter than dogs"

matchObj = re.match( r'(.*) are (.*?) .*', line, re.M|re.I)

if matchObj:
   print "matchObj.group() : ", matchObj.group()
   print "matchObj.group(1) : ", matchObj.group(1)
   print "matchObj.group(2) : ", matchObj.group(2)
else:
   print "No match!!"

Quando o código acima é executado, ele produz o seguinte resultado -
matchObj.group() :  Cats are smarter than dogs
matchObj.group(1) :  Cats
matchObj.group(2) :  smarter

A pesquisa Função


Esta função procura a primeira ocorrência de RE padrão dentro de cadeia com sinalizadores opcionais .

Aqui está a sintaxe para esta função -
re.search(pattern, string, flags=0)

Aqui está a descrição dos parâmetros -
Nº Sr. Parâmetro e descrição
1
padrão

Esta é a expressão regular a ser correspondida.
2
cadeia

Esta é a string, que seria pesquisada para corresponder ao padrão em qualquer lugar da string.
3
bandeiras

Você pode especificar diferentes sinalizadores usando OR bit a bit (|). Estes são modificadores, que estão listados na tabela abaixo.

A re.pesquisa função retorna uma correspondência objeto em caso de sucesso, nenhum na falha. Usamos grupo(num) ou grupos() função de corresponder objeto para obter a expressão correspondente.
Nº Sr. Métodos e descrição do objeto de correspondência
1
grupo(num=0)

Este método retorna a correspondência inteira (ou número de subgrupo específico)
2
grupos()

Este método retorna todos os subgrupos correspondentes em uma tupla (vazio se não houver nenhum)

Exemplo

Demonstração ao vivo
#!/usr/bin/python
import re

line = "Cats are smarter than dogs";

searchObj = re.search( r'(.*) are (.*?) .*', line, re.M|re.I)

if searchObj:
   print "searchObj.group() : ", searchObj.group()
   print "searchObj.group(1) : ", searchObj.group(1)
   print "searchObj.group(2) : ", searchObj.group(2)
else:
   print "Nothing found!!"

Quando o código acima é executado, ele produz o seguinte resultado -
searchObj.group() :  Cats are smarter than dogs
searchObj.group(1) :  Cats
searchObj.group(2) :  smarter

Correspondência versus pesquisa


Python oferece duas operações primitivas diferentes baseadas em expressões regulares:match verifica se há uma correspondência apenas no início da string, enquanto pesquisar verifica se há uma correspondência em qualquer lugar da string (isso é o que o Perl faz por padrão).

Exemplo

Demonstração ao vivo
#!/usr/bin/python
import re

line = "Cats are smarter than dogs";

matchObj = re.match( r'dogs', line, re.M|re.I)
if matchObj:
   print "match --> matchObj.group() : ", matchObj.group()
else:
   print "No match!!"

searchObj = re.search( r'dogs', line, re.M|re.I)
if searchObj:
   print "search --> searchObj.group() : ", searchObj.group()
else:
   print "Nothing found!!"

Quando o código acima é executado, ele produz o seguinte resultado -
No match!!
search --> searchObj.group() :  dogs

Pesquisar e substituir


Um dos re mais importantes métodos que usam expressões regulares é sub .

Sintaxe

re.sub(pattern, repl, string, max=0)

Este método substitui todas as ocorrências do padrão RE em cadeia com repl , substituindo todas as ocorrências, a menos que max forneceu. Este método retorna a string modificada.

Exemplo

Demonstração ao vivo
#!/usr/bin/python
import re

phone = "2004-959-559 # This is Phone Number"

# Delete Python-style comments
num = re.sub(r'#.*$', "", phone)
print "Phone Num : ", num

# Remove anything other than digits
num = re.sub(r'\D', "", phone)    
print "Phone Num : ", num

Quando o código acima é executado, ele produz o seguinte resultado -
Phone Num :  2004-959-559
Phone Num :  2004959559

Modificadores de expressão regular:sinalizadores de opção


Os literais de expressão regular podem incluir um modificador opcional para controlar vários aspectos da correspondência. Os modificadores são especificados como um sinalizador opcional. Você pode fornecer vários modificadores usando OR (|) exclusivo, conforme mostrado anteriormente e pode ser representado por um destes −
Nº Sr. Modificador e descrição
1
re.I

Executa a correspondência que não diferencia maiúsculas de minúsculas.
2
re.L

Interpreta palavras de acordo com a localidade atual. Essa interpretação afeta o grupo alfabético (\w e \W), bem como o comportamento do limite das palavras (\b e \B).
3
re.M

Faz $ corresponder ao final de uma linha (não apenas ao final da string) e faz ^ corresponder ao início de qualquer linha (não apenas ao início da string).
4
re.S

Faz com que um ponto (ponto) corresponda a qualquer caractere, incluindo uma nova linha.
5
re.U

Interpreta letras de acordo com o conjunto de caracteres Unicode. Este sinalizador afeta o comportamento de \w, \W, \b, \B.
6
re.X

Permite uma sintaxe de expressão regular "mais bonita". Ele ignora espaços em branco (exceto dentro de um conjunto [] ou quando escapado por uma barra invertida) e trata o # sem escape como um marcador de comentário.

Padrões de expressão regular


Exceto para caracteres de controle, (+ ? . * ^ $ ( ) [ ] { } | \) , todos os caracteres correspondem a si mesmos. Você pode escapar de um caractere de controle precedendo-o com uma barra invertida.

A tabela a seguir lista a sintaxe de expressão regular que está disponível em Python −
Nº Sr. Padrão e descrição
1
^

Corresponde ao início da linha.
2
$

Corresponde ao fim da linha.
3
.

Corresponde a qualquer caractere único, exceto nova linha. O uso da opção m permite que ela corresponda à nova linha também.
4
[...]

Corresponde a qualquer caractere único entre colchetes.
5
[^...]

Corresponde a qualquer caractere único que não esteja entre colchetes
6
re*

Corresponde a 0 ou mais ocorrências da expressão anterior.
7
re+

Corresponde a 1 ou mais ocorrências da expressão anterior.
8
re?

Corresponde a 0 ou 1 ocorrência da expressão anterior.
9
re{ n}

Corresponde exatamente ao número n de ocorrências da expressão anterior.
10
re{ n,}

Corresponde a n ou mais ocorrências da expressão anterior.
11
re{ n, m}

Corresponde a pelo menos n e no máximo m ocorrências da expressão anterior.
12
a| b

Corresponde a a ou b.
13
(re)

Agrupa expressões regulares e lembra o texto correspondente.
14
(?imx)

Alterna temporariamente entre as opções i, m ou x em uma expressão regular. Se estiver entre parênteses, apenas essa área é afetada.
15
(?-imx)

Desativa temporariamente as opções i, m ou x em uma expressão regular. Se estiver entre parênteses, apenas essa área é afetada.
16
(?:re)

Agrupa expressões regulares sem lembrar o texto correspondente.
17
(?imx:re)

Alterna temporariamente entre as opções i, m ou x entre parênteses.
18
(?-imx:re)

Desativa temporariamente as opções i, m ou x entre parênteses.
19
(?#...)

Comente.
20
(?=re)

Especifica a posição usando um padrão. Não tem alcance.
21
(?! re)

Especifica a posição usando a negação de padrão. Não tem alcance.
22
(?> re)

Corresponde ao padrão independente sem retrocesso.
23
\w

Corresponde a caracteres de palavras.
24
\W

Corresponde a caracteres que não sejam palavras.
25
\s

Corresponde ao espaço em branco. Equivalente a [\t\n\r\f].
26
\S

Corresponde a não espaços em branco.
27
\d

Corresponde aos dígitos. Equivalente a [0-9].
28
\D

Corresponde a não dígitos.
29
\A

Corresponde ao início da string.
30
\Z

Corresponde ao final da string. Se existir uma nova linha, ela corresponderá imediatamente antes da nova linha.
31
\z

Corresponde ao final da string.
32
\G

As partidas apontam onde a última partida terminou.
33
\b

Corresponde aos limites da palavra quando fora dos colchetes. Corresponde a retrocesso (0x08) quando dentro de colchetes.
34
\B

Corresponde aos limites de não palavras.
35
\n, \t etc.

Corresponde a novas linhas, retornos de carro, guias, etc.
36
\1...\9

Corresponde à enésima subexpressão agrupada.
37
\10

Corresponde à enésima subexpressão agrupada se já corresponder. Caso contrário, refere-se à representação octal de um código de caractere.

Exemplos de expressões regulares

Caracteres literais

Nº Sr. Exemplo e descrição
1
python

Corresponder a "python".

Classes de personagens

Nº Sr. Exemplo e descrição
1
[Pp]ython

Corresponder a "Python" ou "python"
2
esfregue[sim]

Combine "ruby" ou "rube"
3
[aeiou]

Corresponder a qualquer vogal minúscula
4
[0-9]

Combine qualquer dígito; igual a [0123456789]
5
[a-z]

Corresponde a qualquer letra ASCII minúscula
6
[A-Z]

Corresponde a qualquer letra ASCII maiúscula
7
[a-zA-Z0-9]

Corresponde a qualquer um dos itens acima
8
[^aeiou]

Corresponder a qualquer coisa que não seja uma vogal minúscula
9
[^0-9]

Corresponder a qualquer coisa que não seja um dígito

Aulas de caracteres especiais

Nº Sr. Exemplo e descrição
1
.

Corresponde a qualquer caractere, exceto nova linha
2
\d

Corresponder a um dígito:[0-9]
3
\D

Corresponder a um não dígito:[^0-9]
4
\s

Corresponder a um caractere de espaço em branco:[ \t\r\n\f]
5
\S

Corresponder a não-espaço em branco:[^ \t\r\n\f]
6
\w

Corresponder a um único caractere de palavra:[A-Za-z0-9_]
7
\W

Corresponder a um caractere não-palavra:[^A-Za-z0-9_]

Casos de repetição

Nº Sr. Exemplo e descrição
1
rubi?

Combine "rub" ou "ruby":o y é opcional
2
rubi*

Corresponder a "esfregar" mais 0 ou mais ys
3
rubi+

Corresponder a "esfregar" mais 1 ou mais ys
4
\d{3}

Corresponder exatamente a 3 dígitos
5
\d{3,}

Corresponder a 3 ou mais dígitos
6
\d{3,5}

Corresponder a 3, 4 ou 5 dígitos

Repetição não gananciosa


Isso corresponde ao menor número de repetições -
Nº Sr. Exemplo e descrição
1
<.*>

Repetição gananciosa:corresponde a "perl>"
2
<.*?>

Não ganancioso:corresponde a "" em "perl>"

Agrupamento com parênteses

Nº Sr. Exemplo e descrição
1
\D\d+

Sem grupo:+ repete \d
2
(\D\d)+

Agrupado:+ repete o par \D\d
3
([Pp]ython(, )?)+

Combine "Python", "Python, python, python", etc.

Referências anteriores


Isso corresponde a um grupo combinado anteriormente novamente -
Nº Sr. Exemplo e descrição
1
([Pp])ython&\1ails

Combine python&pails ou Python&pails
2
(['"])[^\1]*\1

String com aspas simples ou duplas. \1 corresponde a qualquer que seja o 1º grupo correspondente. \2 corresponde ao que o 2º grupo correspondeu, etc.

Alternativas

Nº Sr. Exemplo e descrição
1
python|perl

Combine "python" ou "perl"
2
rub(y|le))

Combine "rubi" ou "rublo"
3
Python(!+|\?)

"Python" seguido por um ou mais ! ou um?

Âncoras


Isso precisa especificar a posição da partida.
Nº Sr. Exemplo e descrição
1
^Python

Corresponde a "Python" no início de uma string ou linha interna
2
Python$

Combine "Python" no final de uma string ou linha
3
\APython

Combine "Python" no início de uma string
4
Python\Z

Combine "Python" no final de uma string
5
\bPython\b

Corresponder a "Python" em um limite de palavra
6
\brub\B

\B é o limite de não-palavra:combine "rub" em "rube" e "ruby", mas não sozinho
7
Python(?=!)

Corresponder a "Python", se seguido por um ponto de exclamação.
8
Python(?!!)

Corresponde a "Python", se não for seguido por um ponto de exclamação.

Sintaxe especial com parênteses

Nº Sr. Exemplo e descrição
1
R(?#comentário)

Corresponde a "R". Todo o resto é um comentário
2
R(?i)uby

Não diferencia maiúsculas de minúsculas ao corresponder a "uby"
3
R(?i:uby)

O mesmo que acima
4
rub(?:y|le))

Agrupe apenas sem criar \1 backreference

python

  1. Tipos de dados Python
  2. Operadores Python
  3. Instrução de passagem do Python
  4. Argumentos da função Python
  5. Dicionário Python
  6. Iteradores Python
  7. Fechamentos Python
  8. Python RegEx
  9. Data e hora do Python
  10. Java - Expressões Regulares