python14.Regular

Expresión regular: (disponible en todos los idiomas, uso diferente) Al capturar datos, agregue "" "antes y después de los datos en la asignación de variable.

Si hay paréntesis entre comillas, solo se extraerá el contenido entre paréntesis y no se extraerán los caracteres de los lados izquierdo y derecho
''. Las comillas triples significan varias líneas

1. ¿Qué es una expresión regular?

Una expresión compuesta por un grupo de símbolos especiales, que puede ayudarlo a verificar fácilmente si una cadena coincide con un patrón determinado. Este escenario de aplicación se puede ver en todas partes en la vida. Python ha agregado el módulo re desde la versión 1.5. El módulo re es un módulo incorporado de Python. Las expresiones regulares se utilizan en los programas de Python a través de este módulo. El módulo re tiene todas las funciones de expresión regular.

2. Características del módulo re

  • El módulo re es exclusivo de Python
  • Las expresiones regulares se pueden utilizar en todos los lenguajes de programación.
  • El módulo re y las expresiones regulares operan en cadenas

2. Escenarios de aplicación de expresiones regulares

  • 1. Se utiliza para hacer coincidir el contenido que cumple una determinada regla de una cadena, la mayoría de los cuales se utilizan en aplicaciones de rastreadores.

  • 2. Determine si el contenido de la cadena cumple con una cierta regla, que se usa principalmente para la entrada seria del usuario. Por ejemplo, si la contraseña es estándar, si el número de teléfono es correcto, etc.

3. Metacaracteres

Regular se compone de un montón de símbolos especiales. Estudiamos principalmente estos símbolos especiales. A continuación, se muestran algunos metacaracteres comunes:

  • . (Coincide con cualquier carácter excepto nueva línea)
  • \ w (coincide con letras, números o guiones bajos)
  • \ s (coincide con cualquier espacio en blanco)
  • \ d (números coincidentes)
  • \ n (coincide con un carácter de nueva línea)
  • \ b (Límite entre alfanumérico y no alfanumérico)
  • ^ (El comienzo de la cadena de coincidencia)
  • $ (Coincide con el final de la cadena)
  • \ W (coincide con no letras, números o guiones bajos)
  • \ D (coincidir con no dígitos)
  • \ S (coincide con caracteres que no son espacios en blanco)
  • a | b (coincide con el carácter a o el carácter b)
  • () (coincide con la expresión entre paréntesis, también significa un grupo)
  • [...] (coincide con los personajes del grupo de caracteres)
  • [^ ...] coincide con todos los caracteres excepto los del grupo de caracteres

4. Cuantificadores

La expresión regular puede coincidir con las reglas una o varias veces.

  • * (Repetido cero o más veces)
  • + (Repetir una o más veces)
  • ? (Repetido cero o una vez)
  • {n} (repetir n veces)
  • {n,} (repetir n veces o más)
  • {n, m} (repite n am veces)

5. Caso de coincidencia de metacaracteres simple

Sabemos que muchos sitios web necesitan completar el buzón de correo. Si el formato del buzón de correo que completa es incorrecto, habrá un recordatorio cordial. Esto se puede juzgar por la regularidad. Ahora, usamos la regularidad para juzgar si el formato de correo electrónico enviado por el usuario es correcta.

Al ejecutar este código, el resultado es:

En la primera línea, primero importe el módulo re; en la tercera línea, re.findall () es uno de los métodos de comparación más utilizados para el módulo re, que se explicará en detalle en la siguiente sección.

Consulte la expresión regular: R & lt ' . 1. @ + [A-zA-Z0-9] + COM ', '. COM 12345678 @ QQ', [A - Z A - the Z - 0 -. 9] representa todas las letras minúsculas Y de 0 a 9 letras pueden coincidir, y ',' [email protected] ', [a-zA-Z-0-9] significa que todas las letras mayúsculas y minúsculas y 0-9 letras pueden coincidir, ^ y ,1 2 3 4 5 6 7 8 @ q q . c o m' ,[Una-de A-CON-0-9 ] La tabla muestra que hay una palabra de escritura grande pequeña madre y 0-9 palabra madre se puede estar en coincidencia con ,E indique respectivamente las posiciones inicial y final de la cadena coincidente.

r '': representa una cadena nativa. Como con la mayoría de los lenguajes de programación, "" se usa como carácter de escape en expresiones regulares, lo que puede causar problemas de barra invertida. Si necesita hacer coincidir el carácter "" en el texto, entonces se requerirán 4 barras invertidas "\" en la expresión regular expresada en el lenguaje de programación: las dos primeras y las dos últimas se usan para escapar en el lenguaje de programación a la inversa. la barra se convierte en dos barras invertidas y luego se convierte en una barra invertida en la expresión regular.

Combinando el código en este caso, si r y \ no se agregan, se considerarán metacaracteres regulares, por lo que agregar r y \ puede hacer el original. Se puede expresar normalmente.

En segundo lugar, el método común de volver

El patrón de expresión regular se compila en un objeto de expresión regular, que se puede utilizar para realizar coincidencias mediante match (), search () y otros métodos que se describen a continuación.

1 、 re.match

re.match intenta hacer coincidir un patrón desde el principio de la cadena. Si la coincidencia no tiene éxito al principio, match () no devuelve ninguno. Si cero o más caracteres al principio de la cadena coinciden con el patrón de expresión regular, se devuelve el objeto coincidente correspondiente. Si la cadena no coincide con el patrón, se devuelve None.

  • re.match (patrón, cadena, banderas = 0)
  • patrón: El patrón de cadena en el regular.
  • cadena: la cadena original que se buscará y reemplazará.
  • banderas: el valor predeterminado es 0, lo que significa que no hay designación especial, como ignorar mayúsculas y minúsculas, designar idioma, etc.
s=re.match('ab','abc123abde').group()
print(s)

Al ejecutar este código, el resultado es: ab. re.match especifica que el objeto coincide desde la posición inicial, por lo que el segundo ab no coincidirá. Obtenga el contenido coincidente a través del método grupal.

2 、 re.search

A diferencia del método de coincidencia desde el principio de la coincidencia, el método de búsqueda se utiliza para buscar en la cadena (búsqueda de izquierda a derecha), siempre que se encuentre un resultado coincidente, devuelve el objeto Match, si no, devuelve Ninguno.

  • re.search (patrón, cadena, banderas = 0)

3 、 re.sub

Devuelve la cadena obtenida al reemplazar el patrón no superpuesto situado más a la izquierda en la cadena con la respuesta de reemplazo. Si no se encuentra el patrón, la cadena devuelta no se modifica. repl puede ser una cadena o una función; si es una cadena, cualquier escape de barra invertida se procesa. Es decir, conviértalo en un único carácter de nueva línea, conviértalo en un retorno de carro, etc. El parámetro de recuento representa la cantidad de veces que se reemplaza el contenido coincidente.

  • re.sub (patrón, respuesta, cadena, recuento = 0, banderas = 0)
  • repl: La cadena reemplazada, que también puede ser una función.
  • count: El número máximo de reemplazos después de que el patrón coincide. El valor predeterminado 0 significa reemplazar todas las coincidencias.

Al ejecutar este código, el resultado es:

4 、

re.compile
compila patrones de expresión regular en objetos de expresión regular, que se pueden usar para hacer coincidir usando match (), search () y otros métodos que se describen a continuación.

re.compile (patrón
[, banderas])

5 、 re.split

Divide la cuerda apareciendo patrones. Si se utilizan paréntesis de captura en el patrón, el texto de todos los grupos del patrón también se devolverá como parte de la lista de resultados. Si maxsplit no es cero, como máximo se producirán divisiones de maxsplit y el resto de la cadena se devolverá como último elemento de la lista.

  • re.split (patrón, cadena [, maxsplit = 0, flags = 0])

  • maxsplit: el número de divisiones, maxsplit = 1 separa una vez, el valor predeterminado es 0, no hay límite para el número de veces.

    Al ejecutar este código, el resultado es: ['abc', 'de', 'fgh', 'ij'].

6 、 re.findall

Devuelve todas las coincidencias no superpuestas del patrón en cadena como una lista de cadenas. Escanee la cadena de izquierda a derecha y devuelva las coincidencias en el orden en que las encontró. Si hay uno o más grupos en el patrón, devuelve una lista de grupos; de lo contrario, devuelve una lista. Si el patrón contiene varios grupos, será una lista de tuplas. Las coincidencias vacías se incluyen en los resultados.

  • re.findall (patrón , cadena , banderas = 0)

    Al ejecutar este código, el resultado es: ['a', 'a', 'a'].

Tres, emparejamiento codicioso y emparejamiento no codicioso

1. Emparejamiento codicioso

De forma predeterminada, las expresiones regulares realizarán coincidencias codiciosas. El llamado "codicioso" consiste en elegir el más largo entre las cadenas coincidentes de varias longitudes. Por ejemplo, la siguiente expresión regular estaba originalmente pensada para seleccionar lo que decía el personaje, pero debido a la característica "codicioso", hay una coincidencia incorrecta:

>>> sentence = """You said "why?" and I say "I don't know"."""
>>> re.findall(r'"(.*)"', sentence)
['why?" and I say "I don\'t know']

2. Coincidencia no codiciosa

Cuando esperamos que las expresiones regulares coincidan con "no codicioso", debemos explicar claramente a través de la gramática:

  • {2,5}? Captura de 2 a 5 veces, pero combina con menos prioridad

Aquí, el signo de interrogación? Puede ser un poco confuso, porque antes tiene su propio significado: la coincidencia anterior aparece 0 o 1 veces. De hecho, solo recuerde, (cuando el signo de interrogación aparece después de la parte de la expresión regular que muestra un número indefinido de veces, significa una coincidencia no codiciosa).

>>> sentence = """You said "why?" and I say "I don't know"."""
>>> re.findall(r'"(.*?)"', sentence)
['why?', "I don't know"]
 
>>> re.findall('hi*?', 'hiiiii')
['h']
>>> re.findall('hi{2,}?', 'hiiiii')
['hii']
>>> re.findall('hi{1,3}?', 'hiiiii')
['hi']

import re
s = re.findall ('hi. ?', 'hiii')
print (s)
s = re.findall ('h.
?', 'hiii')
print (s)
s = re.findall ('i . ? ',' hiii ')
letra (s)
s = re.findall (' i
? ',' hiii ')
letra (s)
s = re.findall ('. ? ',' hiii ')
letra (s)
s = re.findall ('hi.
?', 'hhhiii')
print (s)
s = re.findall ('hi. *?', 'hihihihiii')
print (s) La
conclusión es que el carácter emparejó el
contenido de la cadena Como máximo un tipo de carácter


  1. a-zA-Z0-9 ↩︎

Supongo que te gusta

Origin blog.csdn.net/qwe863226687/article/details/113969178
Recomendado
Clasificación