Latest web development tutorials

Python Expressões Regulares

As expressões regulares são uma sequência de caracteres especiais, ele pode ajudá-lo a verificar facilmente se uma string corresponde a um padrão.

Python re módulo aumenta desde a versão 1.5, padrão de expressão regular que fornece Perl-style.

re módulo permite linguagem Python tem todas as características de expressões regulares.

função compilar para gerar um objeto de expressão regular a partir de uma cadeia padrão e parâmetro opcional flags. Este objeto tem um conjunto de métodos de correspondência de expressão regular e substituição.

re módulo também fornece um método consistente com estas características funções que utilizam uma cadeia padrão como seu primeiro argumento.

Esta seção apresenta as funções de processamento de expressões regulares comuns Python.


função re.match

re.match tenta corresponder a um padrão a partir da posição inicial da cadeia, se não o correspondente posição inicial for bem sucedida, match () retorna nenhum.

sintaxe da função:

re.match(pattern, string, flags=0)

parâmetros da função:

parâmetros descrição
padrão Corresponde à expressão regular
corda A seqüência de caracteres para corresponder.
bandeiras Bandeira, a expressão regular correspondente é utilizado para controlar, tais como: se a, multi-linha maiúsculas e minúsculas jogos, e assim por diante.

método de jogo re.match sucesso retorna um objeto de jogo, caso contrário Nenhum.

Podemos usar o grupo (num) ou grupos () função para obter os objetos correspondentes corresponder expressões.

Combinando métodos de objeto descrição
grupo (num = 0) Toda a correspondência de string de expressão, o grupo () pode inserir mais de um número de grupo, caso em que ele irá retornar um valor correspondente a esses grupos de tuplas.
grupos () Ele retorna uma tupla de todos os grupos da corda, a partir de 1 ao número contido no grupo.

Exemplo 1:

#!/usr/bin/python
# -*- coding: UTF-8 -*- 

import re
print(re.match('www', 'www.w3big.com').span())  # 在起始位置匹配
print(re.match('com', 'www.w3big.com'))         # 不在起始位置匹配

Execute o exemplo acima saída é:

(0, 3)
None

Exemplo 2:

#!/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!!"

Os resultados dos exemplos acima são as seguintes:

matchObj.group() :  Cats are smarter than dogs
matchObj.group(1) :  Cats
matchObj.group(2) :  smarter

método re.search

re.search verificar toda a cadeia e retorna a primeira correspondência com êxito.

sintaxe da função:

re.search(pattern, string, flags=0)

parâmetros da função:

parâmetros descrição
padrão Corresponde à expressão regular
corda A seqüência de caracteres para corresponder.
bandeiras Bandeira, a expressão regular correspondente é utilizado para controlar, tais como: se a, multi-linha maiúsculas e minúsculas jogos, e assim por diante.

método de jogo re.search sucesso retorna um objeto de jogo, caso contrário Nenhum.

Podemos usar o grupo (num) ou grupos () função para obter os objetos correspondentes corresponder expressões.

Combinando métodos de objeto descrição
grupo (num = 0) Toda a correspondência de string de expressão, o grupo () pode inserir mais de um número de grupo, caso em que ele irá retornar um valor correspondente a esses grupos de tuplas.
grupos () Ele retorna uma tupla de todos os grupos da corda, a partir de 1 ao número contido no grupo.

Exemplo 1:

#!/usr/bin/python
# -*- coding: UTF-8 -*- 

import re
print(re.search('www', 'www.w3big.com').span())  # 在起始位置匹配
print(re.search('com', 'www.w3big.com').span())         # 不在起始位置匹配

Execute o exemplo acima saída é:

(0, 3)
(11, 14)

Exemplo 2:

#!/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!!"
Os resultados dos exemplos acima são as seguintes:
searchObj.group() :  Cats are smarter than dogs
searchObj.group(1) :  Cats
searchObj.group(2) :  smarter

O re.match diferença e re.search

re.match corresponde apenas o início da cadeia, se o início da string não atende à expressão regular, a coincidência falhar, a função retorna None, e re.search corresponder toda a cadeia, até que ele encontra uma correspondência.

exemplo:

#!/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!!"

matchObj = re.search( r'dogs', line, re.M|re.I)
if matchObj:
   print "search --> matchObj.group() : ", matchObj.group()
else:
   print "No match!!"
Exemplos dos resultados acima são como se segue:
No match!!
search --> matchObj.group() :  dogs

Pesquisar e substituir

módulo de re de Python fornece re.sub para o jogo cadeia de substituição.

sintaxe:

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

A seqüência de caracteres retornada é a corda com os jogos mais à esquerda RE não serão repetidos para substituir. Se o padrão não for encontrado, os personagens vão ser devolvidos inalterada.

contagem de parâmetro opcional é o número máximo de vezes que uma substituição correspondência de padrões; contagem deve ser um número inteiro não negativo. O valor padrão é 0 significa para substituir todas as ocorrências.

exemplo:

#!/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
Os resultados dos exemplos acima são as seguintes:
Phone Num :  2004-959-559
Phone Num :  2004959559

modificador Regex - sinalizador opcional

As expressões regulares podem conter modificadores bandeiras opcional para controlar o modo de jogo. Modificador é especificado como um sinalizador opcional. (|) Para especificar vários sinalizadores que podem ser bit a bit ou através. Como re.I | re.M está definido para bandeiras I e H:

modificadores descrição
re.I Assim que a correspondência não é case sensitive
re.L Fazer a identificação de localização correspondente (locale-aware)
re.M Multi-linha de harmonização, afetando ^ e $
re.S So., novas linhas Incluindo corresponder a todos os caracteres
re.U De acordo com a resolver caracteres conjunto de caracteres Unicode. Este sinalizador afeta \ w \ W, \ b \ B.
re.X Esta bandeira, dando-lhe formato mais flexível, de modo que você vai escrever expressões regulares mais fácil de entender.

padrão de expressão regular

cadeia padrão usando uma sintaxe especial para denotar uma expressão regular:

Letras e os próprios números. Um padrão de expressão regular de letras e números correspondem a mesma cadeia.

A maioria das letras e os números têm um significado diferente quando precedido por uma barra invertida.

A pontuação é escapado apenas quando o próprio jogo, ou eles representam um significado especial.

própria barra invertida precisa usar o escape barra invertida.

Desde expressões regulares normalmente contêm barras invertidas, então é melhor você usar a string original para representá-los. elementos do esquema (como r '/ t ", o equivalente a' // t ') coincide com os correspondentes caracteres especiais.

A tabela a seguir lista os elementos regulares específicos expressão padrão de sintaxe. Se seus padrões de uso, proporcionando argumento flags opcionais, o significado de certos elementos do padrão vai mudar.

modo descrição
^ Coincide com o início da cadeia
$ Corresponde ao fim da cadeia.
. Corresponde a qualquer caractere, exceto nova linha, quando o sinalizador re.DOTALL for especificado, você pode corresponder a qualquer caractere, incluindo nova linha.
[...] É usado para representar um grupo de personagens, listados separadamente: [amk] match 'a', 'm' ou 'k'
[^ ...] Não [] caracteres: [^ abc] corresponde além dos caracteres a, b, c.
re * 0 ou mais de correspondência de expressão.
re + Uma ou mais das expressões relacionados.
re? Jogo 0 ou 1 pelas expressões regulares precedentes para definir segmentos, forma não-ganancioso
re {n}
re {n,} Uma correspondência exacta de n precedente expressão.
re {n, m} Jogo n a m vezes pelas expressões regulares precedentes para definir segmentos, forma gananciosa
a | b Um jogo ou b
(Re) expressão de correspondência G dentro dos parênteses, também representa um grupo
(? Imx) expressão regular consiste em três sinalizadores opcionais: i, m, ou x. Ela afeta apenas a área entre parênteses.
(? -imx) As expressões regulares Fechar i, m, ou x sinalizador opcional. Ela afeta apenas a área entre parênteses.
(:? Re) Semelhante (...), mas não representa um grupo
(Imx :? Re) Eu uso em parênteses, M ou x sinalizador opcional
(-imx :? Re) Não use i, m entre parênteses, ou x sinalizador opcional
(? # ...) Nota.
(? = Re) Encaminhar certeza delimitador. Se a expressão regular contida, aqui representada por ..., combina com sucesso no local atual, e não o contrário. No entanto, uma vez que a expressão contida foi tentado, o motor de correspondência não avança, o restante do padrão é mesmo tentar delimitador direita.
(?! Re) delimitador de negação para a frente. E delimitador certamente contrário; bem sucedida quando a expressão contida não coincide com a posição atual na seqüência
(?> Re) correspondência de padrão independente, eliminando realimentação.
\ W alfanumérico Jogo e sublinhados
\ W Combinar não-alfanuméricos e sublinhados
\ S Corresponde a qualquer caractere de espaço em branco, equivalente a [\ t \ n \ r \ f].
\ S Corresponde a qualquer caractere não-branco
\ D Corresponde a qualquer número que é equivalente a [0-9].
\ D Corresponde a qualquer não-numérico
\ A Coincide com o início da string
\ Z Corresponde a corda, se é que existe uma nova linha, pouco antes do fim da cadeia para corresponder nova linha. c
\ Z end cadeia jogo
\ G Jogo Jogo completou última posição.
\ B Corresponde a um limite de palavra, ou seja, refere-se a localização e os espaços entre as palavras. Por exemplo, "er \ b 'pode coincidir com o" nunca "no" er ", mas não pode coincidir com o" verbo "no" er ".
\ B Combinar non-limite de palavra. 'Er \ B' pode coincidir com o "verbo" no "er", mas não pode corresponder "nunca" no "er".
\ N, \ t, e semelhantes. Corresponde a um caractere de nova linha. Corresponde a um caractere de tabulação. espere
\ 1 ... \ 9 Correspondência de sub-expressão n-th pacote.
\ 10 Combinar o primeiro n pacotes subexpression se for depois de uma partida. Caso contrário, a expressão refere-se ao código de caracteres octal.

Exemplos de expressões regulares

jogos de caracteres

Exemplos descrição
pitão Matching "python".

Classes de caracteres

Exemplos descrição
[PP] ython CORRESPONDÊNCIA "Python" ou "python"
esfregue [vos] Match "ruby" ou "caipira"
[Aeiou] Qualquer uma das letras em parênteses correspondentes
[0-9] Corresponde a qualquer dígito. Semelhante a [0123456789]
[Az] Corresponde a qualquer letras minúsculas
[AZ] Corresponde a qualquer maiúsculas
[A-zA-Z0-9] Corresponde a qualquer letras e números
[^ Aeiou] Além de todos os outros do que as cartas personagens aeiou
[^ 0-9] Correspondência de caractere, exceto figuras

classes de caracteres especiais

Exemplos descrição
. Corresponde a qualquer caractere único, exceto "\ n" é. Para corresponder incluindo '\ n', incluindo quaisquer caracteres, como o uso de '[. \ N]' modo.
\ D Corresponde a um caractere de dígito. Equivalente a [0-9].
\ D Combinar um caracteres não numéricos. É equivalente a [^ 0-9].
\ S Corresponde a qualquer caracteres em branco, incluindo espaços, tabulações, quebras de página e assim por diante. É equivalente a [\ f \ n \ r \ t \ v].
\ S Jogos quaisquer caracteres não-espaço em branco. É equivalente a [^ \ f \ n \ r \ t \ v].
\ W Corresponde a qualquer caractere de palavra, incluindo o sublinhado. É equivalente a '[A-Za-z0-9_]'.
\ W Corresponde a qualquer caractere não-palavra. É equivalente a '[^ A-Za-z0-9_]'.