Latest web development tutorials

expresiones regulares python3

Las expresiones regulares son una secuencia de caracteres especiales, puede ayudarle a comprobar fácilmente si una cadena coincide con un patrón.

Python re aumentos del módulo desde la versión 1.5, patrón de expresión regular que proporciona Perl-estilo.

re módulo permite lenguaje Python tiene todas las características de las expresiones regulares.

función de compilar para generar un objeto de expresión regular de una cadena de patrón y las banderas de los parámetros opcionales. Este objeto tiene un conjunto de métodos para la detección de expresiones regulares y sustitución.

re módulo también proporciona un método consistente con estas características funciones que utilizan una cadena de patrón como su primer argumento.

Esta sección presenta las funciones de procesamiento de expresiones regulares comunes de Python.


función re.match

re.match trata de coincidir con un patrón desde la posición inicial de la cadena, si no el juego de posición de partida es exitosa, fósforo () devuelve ninguna.

Sintaxis de la función:

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

Parámetros de la función:

parámetros descripción
patrón Concordancia de expresiones regulares
cadena La cadena de igualar.
banderas Bandera, la coincidencia de expresión regular se utiliza para controlar, por ejemplo: si el mayúsculas y minúsculas, de varias líneas coincide, y así sucesivamente.

método match re.match éxito devuelve un objeto partido, de lo contrario Ninguno.

Podemos utilizar el grupo (num) o grupos () para obtener los objetos que coinciden coinciden con las expresiones.

Métodos de emparejamiento de objetos descripción
grupo (num = 0) La totalidad de la coincidencia de cadenas expresión, grupo () puede introducir más de un número de grupo, en cuyo caso se devolverá un valor correspondiente a esos grupos de tuplas.
grupos () Devuelve una tupla de todos los grupos de la cadena, desde el 1 hasta el número que figura en el grupo.

Ejemplo 1:

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

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

Ejecutar la salida anterior ejemplo es:

(0, 3)
None

Ejemplo 2:

#!/usr/bin/python3
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!!")

Los resultados de los ejemplos anteriores son los siguientes:

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

método re.search

re.search escanear toda la cadena y devuelve la primera persona compatible.

Sintaxis de la función:

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

Parámetros de la función:

parámetros descripción
patrón Concordancia de expresiones regulares
cadena La cadena de igualar.
banderas Bandera, la coincidencia de expresión regular se utiliza para controlar, por ejemplo: si el mayúsculas y minúsculas, de varias líneas coincide, y así sucesivamente.

método match re.search éxito devuelve un objeto partido, de lo contrario Ninguno.

Podemos utilizar el grupo (num) o grupos () para obtener los objetos que coinciden coinciden con las expresiones.

Métodos de emparejamiento de objetos descripción
grupo (num = 0) La totalidad de la coincidencia de cadenas expresión, grupo () puede introducir más de un número de grupo, en cuyo caso se devolverá un valor correspondiente a esos grupos de tuplas.
grupos () Devuelve una tupla de todos los grupos de la cadena, desde el 1 hasta el número que figura en el grupo.

Ejemplo 1:

#!/usr/bin/python3

import re

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

Ejecutar la salida anterior ejemplo es:

(0, 3)
(11, 14)

Ejemplo 2:

#!/usr/bin/python3

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!!")
Los resultados de los ejemplos anteriores son los siguientes:
searchObj.group() :  Cats are smarter than dogs
searchObj.group(1) :  Cats
searchObj.group(2) :  smarter

El re.match diferencia y re.search

re.match coincide con sólo el principio de la cadena, si el principio de la cadena no cumple con la expresión regular, la comparación falla, la función devuelve None, y re.search que coincida con la cadena entera, hasta que se encuentra una coincidencia.

Ejemplo:

#!/usr/bin/python3

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!!")
Los ejemplos de los resultados anteriores son como sigue:
No match!!
search --> matchObj.group() :  dogs

Buscar y reemplazar

módulo de regreso de Python proporciona re.sub para el partido clave en la cadena.

sintaxis:

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

La cadena devuelta es la cadena con los partidos más a la izquierda de ER no se repetirá para reemplazar. Si no se encuentra el patrón, los caracteres se devolverán sin cambios.

recuento parámetro opcional es el número máximo de veces que un reemplazo de coincidencia de patrones; conteo debe ser un número entero no negativo. El valor por defecto es 0 significa para reemplazar todas las ocurrencias.

Ejemplo:

#!/usr/bin/python3
import re

phone = "2004-959-559 # 这是一个电话号码"

# 删除注释
num = re.sub(r'#.*$', "", phone)
print ("电话号码 : ", num)

# 移除非数字的内容
num = re.sub(r'\D', "", phone)
print ("电话号码 : ", num)
Los resultados de los ejemplos anteriores son los siguientes:
电话号码 :  2004-959-559 
电话号码 :  2004959559

Expresiones regulares modificador - Bandera opcional

Las expresiones regulares pueden contener modificadores opcionales banderas para controlar el modo de emparejamiento. Modificador se especifica como una bandera opcional. (|) Para especificar varias banderas que se pueden OR bit a bit a través. Como re.I | RE.M se establece en indicadores de E y M:

modificadores descripción
re.I Así que la igualación no es sensible
re.L Realizar una identificación de localización coincidente (locale-consciente)
RE.M Multi-línea de juego, afectando ^ $ y
re.S So., saltos de línea, incluyendo todos los caracteres coinciden
re.U Según resolver caracteres Unicode de conjunto de caracteres. Esta bandera afecta \ w, \ W, \ b, \ B.
re.X Esta bandera al darle formato más flexible para que usted va a escribir expresiones regulares más fácil de entender.

patrón de expresión regular

cadena de patrón utilizando una sintaxis especial para denotar una expresión regular:

Las letras y los números mismos. Un patrón de expresión regular de letras y números que coincida con la misma cadena.

La mayor parte de las letras y números tendrán un significado diferente cuando está precedido por una barra invertida.

Puntuacion se escapó solo cuando el partido en sí, o que representan un significado especial.

propia barra invertida necesita usar el escape de barra invertida.

Dado que las expresiones regulares por lo general contienen barras invertidas, por lo que es mejor utilizar la cadena original para representarlos. elementos de esquema (como r '/ t', equivalente a '// t') coincide con los caracteres especiales correspondientes.

En la siguiente tabla se enumeran los elementos específicos de sintaxis patrón de expresión regular. Si sus patrones de uso mientras que proporciona el argumento opcional banderas, el significado de ciertos elementos del patrón cambiará.

modo descripción
^ Coincide con el principio de la cadena
$ Coincide con el final de la cadena.
. Coincide con cualquier carácter excepto una línea nueva, cuando se especifica la bandera re.DOTALL, que puede coincidir con cualquier carácter incluyendo nueva línea.
[...] Se utiliza para representar un grupo de personajes, que se enumeran por separado: [amk] partido 'a', 'm' o 'k'
[^ ...] No [] caracteres: [^ abc] coincide además de los caracteres a, b, c.
re * 0 o más de coincidencia de expresión.
re + Una o más de las expresiones determinadas.
re? Partido 0 o 1 por las expresiones regulares anteriores para definir segmentos, de forma no codicioso
re {n}
re {n,} Una coincidencia exacta de n anterior expresión.
re {n, m} Partido n de m veces por las expresiones regulares anteriores para definir segmentos, forma codiciosa
a | b Un partido ob
(Re) G expresión de coincidencia dentro de los corchetes, también representa un grupo
(? IMX) Expresión regular consta de tres indicadores opcionales: i, m, o x. Afecta sólo el área entre paréntesis.
(? -imx) Las expresiones regulares Cerrar i, m, o X bandera opcional. Afecta sólo el área entre paréntesis.
(?: Re) Similar (...), pero no representa un grupo
(IMX :? Re) Yo uso paréntesis, M o X bandera opcional
(-imx :? Re) No use i, m entre paréntesis, o X bandera opcional
(? # ...) Nota.
(? = Re) Reenviar Seguro delimitador. Si la expresión regular contenida, representada aquí por ... los partidos éxito en la ubicación actual, y falla de alguna manera. Sin embargo, una vez que la expresión contenida ha sido tratado, el motor de juego no avanza, y el resto de la pauta es ni siquiera intentar delimitador de la derecha.
(?! Re) delimitador de negación hacia adelante. Y ciertamente contrario delimitador; satisfecho cuando la expresión contenida no coincide con la posición actual en la cadena
(?> Re) la coincidencia de patrones independientes, eliminando vuelta hacia atrás.
\ W alfanumérica partido
\ W Coincidir no alfanumérico
\ S Coincide con cualquier carácter de espacio en blanco, equivalente a [\ t \ n \ r \ f].
\ S Coincide con cualquier carácter no en blanco
\ D Coincide con cualquier número que es equivalente a [0-9].
\ D Coincide con cualquier no numérico
\ A Coincide con el inicio de la cadena
\ Z finales cadena de coincidencia, si es que existe nueva línea, justo antes del final de la cadena para que coincida con salto de línea. c
\ Z finales cadena de búsqueda
\ G Partido Partido completó última posición.
\ B Coincide con un límite de palabra, es decir, se refiere a la ubicación y los espacios entre las palabras. Por ejemplo, 'er \ b' puede coincidir con el "no" en el 'er', pero no puede coincidir con el "verbo" de la 'er'.
\ B Coincidir con límite de palabra. 'Er \ B' puede coincidir con el "verbo" de la 'er', pero no pueden igualar "nunca" en el 'er'.
\ N, \ t, y similares. Coincide con un carácter de nueva línea. Coincide con un carácter de tabulación. esperar
\ 1 ... \ 9 Coincidencia de sub-expresión enésimo paquete.
\ 10 N coincidir con la primera subexpresión paquetes si es después de un partido. De lo contrario, la expresión se refiere al código de carácter octal.

Ejemplos de expresiones regulares

partidos de caracteres

Ejemplos descripción
pitón Coincidencia de "pitón".

Clases de caracteres

Ejemplos descripción
[PP] ython Coincidencia "Python" o "pitón"
frotación [os] Partido "ruby" o "Rube"
[Aeiou] Cualquiera de las letras en paréntesis búsqueda
[0-9] Coincide con cualquier dígito. Similar a [0123456789]
[AZ] Equivale a cualquier letras minúsculas
[AZ] Coincide con cualquier mayúscula
[A-Za-Z0-9] Equivale a cualquier letras y números
[^ Aeiou] Además de todos los caracteres que no sean letras aeiou
[^ 0-9] Coincidencia de carácter excepto cifras

clases de caracteres especiales

Ejemplos descripción
. Coincide con cualquier carácter excepto "\ n" es. Para hacer coincidir incluyendo '\ n', incluyendo todos los caracteres, como el uso de '[. \ N]' modo.
\ D Coincide con un carácter dígitos. Equivale a [0-9].
\ D Coinciden con un carácter no numérico. Es equivalente a [^ 0-9].
\ S Coincide con cualquier espacio en blanco, incluidos los espacios, tabulaciones, saltos de página, y así sucesivamente. Es equivalente a [\ f \ n \ r \ t \ v].
\ S Coincide con cualquier carácter no está en blanco. Es equivalente a [^ \ f \ n \ r \ t \ v].
\ W Coincidirá con cualquier carácter de palabra, incluido el subrayado. Es equivalente a '[A-Za-z0-9_]'.
\ W Coincide con cualquier carácter que no sea la palabra. Es equivalente a '[^ A-Za-z0-9_]'.