Python expresiones regulares rápida entrada

Las expresiones regulares se utilizan a menudo en el desarrollo de programas, tales como datos de autenticación (formato), cadena de caracteres de sustitución contenido y extraer el contenido por lo que se utiliza la situación, pero ahora muchos promotores para la expresión regular sólo en el conocimiento básico o voluntad con una etapa. Una vez que la situación (como rastreadores web) en grandes cantidades utilizando expresiones regulares encontradas se puede decir que, básicamente, perdió el equilibrio. En este artículo voy a tener que aprender sobre el uso de expresiones regulares de Python. Antes de leer este artículo usted necesita para dominar los conceptos básicos de Python, o tener un conocimiento básico de otros idiomas también se puede desarrollar, porque en el fondo cada idioma el uso de expresiones regulares en formas que son similares.

Cero, la base de expresiones regulares

  1. La extracción de caracteres (string)
    A veces tenemos que conseguir una parte del contenido de una cadena, este contenido puede ser un personaje también puede ser una cadena, si no literalmente, a continuación, tiempo de recorrido de contraste, sino también propenso a errores. Bueno, esta vez podemos utilizar una expresión regular carácter concordante función. Las expresiones regulares proporcionan un método para hacer coincidir 4 caracteres para nosotros, de la siguiente manera:
gramática explicación ejemplo partidos de cuerda
. Cualquier carácter excepto una línea nueva "\ n" en ab ACB, ADB, A2B, a ~ b
\ Escapar, para transferir un personaje tras personaje para cambiar el significado original a B C abc, CA, un \ c
[] Coincide con cualquier carácter dentro de los corchetes a B C D e F abd, ACF, ADF, AEF
[^] Además de los caracteres dentro de los corchetes, los otros personajes coinciden un [^ a, b, c, d, e] f A1F, un # f, AZF, AGF
  1. caracteres predefinidos
    personajes llaman un carácter predefinido es una expresión regular para nuestra reserva específicamente diseñados para que coincida con el formato del contenido, como los números que coinciden con el \ d y la coincidencia espacio en blanco \ s , y así sucesivamente. Podemos igualar rápidamente el contenido de una cadena para cumplir con los requisitos de la utilización de caracteres predefinidos. contenido predefinido coincide con los personajes, el mismo también se puede utilizar en la forma anteriormente carácter hablada coincide con el partido, pero la cantidad de código es relativamente pequeña. Enumerado en la tabla es caracteres predefinidos:
gramática explicación ejemplo partidos de cuerda
^ Lo que comenzó con una cadena ^ 123 123abc, 123321,123zxc
PS En lo extremo de la cuerda 123 $ abc123,321123, zxc123
\si Coincida con un límite de palabra, no coincide con cualquier carácter \ Basd \ b asd
\re emparejar 0-9 zx \ DC zx1c, zx2c, zx5c
\RE Coincidencia no numérico zx \ Dc zxvc, ZX $ c, & c zx
\ s espacios en blanco del partido zx \ sc c zx
\ S Coincidencia de caracteres no está en blanco zx \ Sc zxac, zx1c, zxtc
\ w Coinciden con las letras, números y guiones bajos zx \ c zxdc, zx1c, zx_c
\ W No coinciden con las letras, números y guiones bajos zx \ Wc c zx zx zx $ c (c

Hay personajes predefinidos siguientes puntos deben tenerse en cuenta:

  • \ B concuerda con una sola posición, un lado de esta posición es un personaje que constituyen una palabra, al otro lado del inicio carácter no-palabra o al final de la cadena. \ B es el ancho cero.
  • \ W emparejado gama de diferentes lenguajes de codificación no es lo mismo, el idioma coincide con el código ASCII es [a-zA-Z0-9_], y que coincide con el código de idioma Unicode es [a-zA -Z0-9_] y chinos caracteres, símbolos de ancho completo y otros caracteres especiales.
  1. Cantidad
    en algunos casos es necesario para que coincida con el contenido duplicado, entonces podemos utilizar el número de definido el funcionamiento en modo. El número define la siguiente tabla:
gramática explicación ejemplo partidos de cuerda
* 0 veces para que coincida zxc * zx, zxccccc
+ 1 varias veces para que coincida zxc + zxc, zxccccc
? Partido 0 o 1 zxc? zxc, ZX
{metro} hora de los partidos m zxc {3}, etc. zxcccvb
{metro,} Partido m o más veces zxc {3}, etc. zxcccvb, zxccccccccvb
{,norte} Partido 0 a n veces zxc {3}, etc. zxvb, zxcvb, zxccvb, zxcccvb
{Minnesota} Matched a n veces m veces {1,3} zxc zxcvb, zxccvb, zxcccvb
  1. Aserción
    afirmación, también conocido como afirmación de anchura cero, en referencia a la expresión afirmación cuando el partido fue cuando cierto, pero no coincide con el contenido de la expresión afirmación. Y al final es el principio, $ representantes ^, \ b representa el límite de palabra como iniciales y finales afirmación afirmación tiene un efecto similar, que coinciden sólo ciertos lugares en el proceso de correspondencia, no tome el personaje, llamado de anchura cero. La ubicación llamada se refiere a la izquierda del primer carácter de la cadena, el medio y los caracteres adyacentes derecha del último carácter. Hay cuatro expresión afirmación de anchura cero:
  • crítica negativa de anchura cero después de que la afirmación (? <! Exp), que coincide con una posición detrás de la afirmación no se sostiene cuando la expresión no coincide con el establecimiento. Por ejemplo, \ w + \ d, cadena coincidente zxc no termina (<zxc?);
  • Recordando la primera anchura cero afirmación negativa (?! Exp), la expresión coincide con la posición de la afirmación anterior, que no coincida con el establecimiento. Por ejemplo: \ d \ w +, emparejar la secuencia de caracteres no se inicia con zxc; (zxc ?!)
  • (? = Exp) primera afirmación, la afirmación es verdadera posición coincidente en frente de la afirmación, por ejemplo, para que coincida persecución "una expresión regular" esta cadena en la re regular, podemos escribir Re (= gular?);
  • Pelo después de la afirmación (? <= Exp), la afirmación es verdadera posición partido a la afirmación, por ejemplo, "EGEX representa la expresión regular" cadena con el fin de que coincida con la expresión regular y la adición regular re, puede utilizar re (?! G ) esta expresión define la ubicación de la re bien, esto no es una posición detrás del personaje g. Pre y post-diferencia del pelo es que la posición del carácter después del partido si la expresión entre paréntesis.
  1. La codicia / no expansivo
    expresión regular coincidirá tanto como sea posible al personaje, que se llama codicioso, codicioso patrón de expresión regular es el modo por defecto. Pero a veces nos dan codiciosos causar sufrimiento innecesario, por ejemplo, queremos que coincida con la cadena "Jack123Chen123Chen" en "Jack123Chen", pero fuera de la codicia es la coincidencia de patrones "Jack123Chen123Chen", entonces tenemos que utilizar no expansivo el modo de resolver este problema, el modo de no expansivo utilizado comúnmente expresión es la siguiente:
gramática explicación
*? Coincida con 0 o más, pero menos duplicación siempre que sea posible
+? Coincidir con 1 o más veces, pero siempre que sea posible una menor duplicación
?? Coincida con 0 ó 1, pero menos duplicación siempre que sea posible
{metro,}? Partidos m o más veces, pero menos duplicación siempre que sea posible
{Minnesota}? Coinciden m veces o n veces, tanto como sea posible, pero menos de repetición
  1. Otros
    contenidos en sus expresiones regulares se utilizan comúnmente, Echemos un vistazo a no acostumbrarse, pero la misma sintaxis de gran alcance.
  • O a juego, también conocida como la rama correspondiente, esa rama, siempre y cuando hay un partido igualado y o frases que utilizamos en el desarrollo de similares. O el uso coincidente | rama dividida, por ejemplo, tenemos que coincidir con el nombre en Inglés, pero en Inglés segundo nombre y el apellido es posible · división, puede haber un espacio delimitado, entonces podemos utilizar el quirófano coincidir para hacer frente a este problema. Formato es el siguiente: [A-Za-z] + · [A-Za-z] + | [A-Za-z] + \ s [A-Za-z] +
  • Combinación, varios elementos se combinan en una sola unidad, que pueden * + |? A ser modificados y otros símbolos, y las cuerdas, y esta combinación puede recordar que espera combinar para proporcionar referencias de uso. Uso de paquetes () de la figura. Como la fecha de acceso expresión regular podría escribir: \ d {4} - (0 [1-9] | 1 [0-2]) - (0 [1-9] | [12] [0-9] | 3 [01]). El primer paquete (0 [1-9] | 1 [0-2]) es el mes de partido regular, el segundo paquete (0 [1-9] | [12] [0-9] | 3 [01] ) representa el día del partido regular.

A, Python usando expresiones regulares

Utilizar expresiones regulares en Python es muy simple, Re módulo nos proporciona soporte para expresiones regulares. Un total de tres pasos utilizando los pasos:

  • La conversión de la normal expresión de cadena Patrón ejemplo;
  • Uso patrón de ejemplo caracteres que se ajustará con el procesamiento, el resultado de la casación es un ajuste de ejemplo;
  • Coincidir para llevar a cabo la operación con los siguientes ejemplos.

En Python, se utilizó el método de re Hay seis, a saber: la compilación , partido , Buscar , findAll , Dividir y Sub , la siguiente explicación para esto sería de alrededor de seis métodos.

  1. compilación
    papel es el de los métodos de compilación cadena de expresión regular en ejemplo del patrón, dos parámetros que tienen un patrón y las banderas , el tipo de cadena de patrón es el tipo de parámetro, que recibe la cadena de expresión regular, tipo banderas es un int, un recibido es el número de coincidencia de patrones, parámetros banderas no requeridas, el valor predeterminado es 0 (ignoran). banderas perfil de compatibilidad 6 tiene la siguiente:
el modo de ajuste explicación
re.I ignorar mayúsculas
movimiento rápido del ojo el modo de juego de varias líneas
re.S Cualquier modo de partido
re.L patrones que coinciden con caracteres predefinidos
re.U La definición de un personajes coincidencia de patrones
Rvdo El modo detallado

El modo de seis rara vez se utiliza en el desarrollo real, sólo necesitamos saber puede ser. Uso de compilación muy simple, de la siguiente manera:

import re

pattern = re.compile(r'\d')
  1. coincida con
    la acción utilizando partido Patrón ejemplo, empezar desde el lado izquierdo para que coincida con la cadena si un partido para devolver una instancia del partido, si no hay ninguna coincidencia de retorno Ninguno.
import re

def getMatch(message):
    pattern = re.compile(r'(\d{4}[-年])(\d{2}[-月])(\d{2}日{0,1})')
    match = re.match(pattern, message)
    if match:
        print(match.groups())
        for item in match.groups():
            print(item)
    else:
        print("没匹配上")


if __name__ == '__main__':
    message = "2019年01月23日大会开始"
    getMatch(message)
    message = "会议于2019-01-23召开"
    getMatch(message)

Utilizamos los códigos de grupos del método, este método se utiliza para obtener coincidencia de cadenas a cabo. Después de un tiempo aquí, hay muchos lectores se preguntaron por qué la primera pieza de contenido puede igualar hasta la fecha, y la segunda pieza de contenido no pueden hacer? Esto se debe a que el partido está emparejando método de la posición de inicio de la cadena. FIG resultados código de servicio:

QQ1vtA.png

  1. search
    search 方法与 match 方法功能是一样的,只不过 search 方法是对整个字符串进行匹配。将前一小节代码中的 getMatch 方法进行改动,即可将第二段内容中的年月日匹配出来。
import re

def getMatch(message):
    pattern = re.compile(r'(\d{4}[-年])(\d{2}[-月])(\d{2}日{0,1})')
    match = re.search(pattern, message)
    if match:
        print(match.groups())
        for item in match.groups():
            print(item)
    else:
        print("没匹配上")


if __name__ == '__main__':
    message = "2019年01月23日大会开始"
    getMatch(message)
    message = "会议于2019-01-23召开"
    getMatch(message)

上述代码运行结果如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VmTrXNxa-1575984679614)(https://s2.ax1x.com/2019/12/03/QQ8fR1.png)]
4. findall
findall 方法的作用是匹配整个字符串,以列表的形式返回所有匹配结果。

import re


def getMatch(message):
    pattern = re.compile(r'\w+')
    match = re.findall(pattern, message)
    if match:
        print(match)
    else:
        print("没匹配上")


if __name__ == '__main__':
    message = "my name is 张三"
    getMatch(message)
    message = "张三 is me"
    getMatch(message)

代码运行结果如下图:

QQGYy6.png
5. split
split 方法是利用指定的字符来分割字符串。

import re


def getMatch(message):
    pattern = re.compile(r'-')
    match = re.split(pattern, message)
    if match:
        print(match)
    else:
        print("没匹配上")


if __name__ == '__main__':
    message = "2018-9-12"
    getMatch(message)
    message = "第一步-第二步-第三步-第四步-and more"
    getMatch(message)

上述代码运行结果如下图:

QQGDfA.png
6. sub
sub 方法用来替换字符串,它接受5个参数,其中常用的有三个:

  • pattern,Pattern 实例
  • string,等待替换的字符串
  • repl,表示替换的新字符串或需要执行的替换方法
  • count,替换次数,默认为0表示全部替换
import re


def getMatch(match):
    return match.group(0).replace(r'年龄', 'age')


if __name__ == '__main__':
    message = "your 年龄 ?"
    pattern=re.compile(r'\w+')
    print(re.sub(pattern,getMatch,message))

代码运行结果如下图:

QQYSUg.png

三、总结

Python 中正则表达式使用起来非常方便,上面所展示的代码,完全可以直接复制出来稍加修改后放在项目中使用。内容不多,主要是讲解代码怎么使用,希望大家完全理解掌握了正则表达式的写法。

发布了204 篇原创文章 · 获赞 101 · 访问量 35万+

Supongo que te gusta

Origin blog.csdn.net/gangzhucoll/article/details/103483440
Recomendado
Clasificación