Red de conocimientos turísticos - Conocimientos sobre calendario chino - Comprenda las funciones comunes de las expresiones regulares de Python en un artículo

Comprenda las funciones comunes de las expresiones regulares de Python en un artículo

01 Descripción general de Re

El módulo Re es un módulo integrado de Python, que proporciona todos los usos de las expresiones regulares en Python. La ubicación de instalación predeterminada es la carpeta Lib en Python. directorio raíz (como ..\Python\Python37\Lib). Proporciona principalmente tres tipos principales de métodos de operación de cadenas:

Búsqueda/coincidencia de caracteres

Reemplazo de caracteres

Segmentación de caracteres

Dado que es para Para los módulos de tipo cadena, debe mencionar el tipo de codificación de cadena. En el módulo re, la cadena de patrón y la cadena de búsqueda pueden ser cadenas Unicode (tipo str comúnmente usado) o cadenas de bytes de 8 bits (bytes, 2 números hexadecimales, como \xe5), pero deben ser cadenas del mismo tipo. .

02 Búsqueda/coincidencia de cadenas

Precompilación: compilar

Antes de introducir las funciones de búsqueda y coincidencia, primero necesita conocer la función de compilación de re, que puede ¿Compilar una cadena de patrón en un tipo de expresión regular para su posterior coincidencia y reutilización rápida

import?re patrón?=?re.compile(r'[a-z]{2, 5}') tipo( patrón)? #re.Pattern

Este ejemplo crea un objeto de expresión regular (re.pattern), llamado patrón, que se utiliza para hacer coincidir una cadena de patrón de 2 a 5 letras minúsculas. Más adelante, cuando utilice otras funciones de expresión regular, podrá utilizar el patrón para realizar llamadas a métodos.

Coincidencia: coincidir

La función de coincidencia se utiliza para hacer coincidir desde la posición inicial de la cadena de texto. Si la coincidencia es exitosa, se devuelve el objeto coincidente correspondiente. se puede llamar al método group(). Devuelve el resultado coincidente. También puedes utilizar el método span() para devolver el rango de subíndice inicial y final de la coincidencia; de lo contrario, devuelve Ninguno

import?re patrón? =?re.compile(r'[a-z]{2, 5}') text1?=?'this?is?a?re?test' res?=?pattern.match(text1) print(res)?# si ?res: ?print(res.group())?#this ?print( res.span())?#(0,?4) text2?=?'Sí,?esto?es?una?re?prueba' print(pattern.match(text2))#None

La función de coincidencia también tiene una función variante fullmatch, que devuelve un objeto coincidente si y sólo si la cadena de patrón y la cadena de texto coinciden exactamente; de ​​lo contrario, devuelve Ninguno

Búsqueda: buscar

coincidencia Solo se proporcionan los resultados de la coincidencia desde la posición inicial de la cadena de texto. Si desea hacer coincidir desde cualquier posición, puede llamar al método de búsqueda. Similar al método de coincidencia, cuando una coincidencia es exitosa en cualquier posición, se devolverá inmediatamente un objeto coincidente. También puede llamar al método span() para obtener los intervalos de inicio y finalización, y llamar al método de grupo para obtener la cadena de texto coincidente.

import?re patrón?=?re.compile(r'\s[a-z]{2}') text1?=?'this?is ?a?re?test' res?=?patrón .search(text1) print(res)?# if?res: ?print(res.group())?#is ?print(res.span())?# (4,?7) patrón2?=?re. compile(r'\s[a-z]{5}') text2?=?'Sí, esto?es?a?re?test' print(pattern2.search( text2))#Ninguno

Ambos La coincidencia y la búsqueda se utilizan para hacer coincidir un único resultado. La única diferencia es que el primero coincide desde la posición inicial, mientras que el segundo coincide desde cualquier posición. Si la coincidencia es exitosa, se devuelve un objeto de coincidencia.

Búsqueda completa: findall/finditer

Es casi la función de expresión regular más utilizada, utilizada para encontrar todos los resultados coincidentes, por ejemplo, en la extracción de información del rastreador, se puede extraer muy convenientemente Todos los campos coincidentes

import?re patrón?=?re.compile(r'\s[a-z]{2,5}') text1?=?'this?is?a?re? test' res?=?pattern.findall(text1) print(res)?#['?is', ?'?re', ?'?test']

findall devuelve un tipo de objeto de lista, Cuando no hay ningún objeto coincidente, se devuelve una lista vacía.

Para evitar consumir demasiada memoria al devolver una gran cantidad de resultados coincidentes al mismo tiempo, puede llamar a la función finditer para devolver un tipo de iterador, donde cada elemento de iteración es un objeto coincidente, y puede continuar llamando al métodos group y span para obtener los resultados correspondientes

import?re patrón?=?re.compile(r'\s[a-z]{2,5}') text1?=?'this?is? a?re?test' res?=?pattern.finditer(text1) para?r?in?res: ?print(r.group()) """ ?is ?re ?test """

Cuando la cadena del patrón coincidente es relativamente simple o solo requiere llamadas de palabras, los métodos Todos anteriores también pueden llamar directamente a funciones de re clase sin compilación previa. En este momento, el primer parámetro de cada método es la cadena de patrón.

import?re patrón?=?re.compile(r'\d{2,5}') text?=?'this?is?re?test' re.findall('[a-z] ',?text)?#['this',?'is',?'re',?'test'] 03 Reemplazo/división de cadenas

Reemplazo: sub/subn

Cuando necesite reemplazar condicionalmente una cadena de texto, puede llamar a re.sub para implementarla (por supuesto, también puede compilarlo primero y luego llamar al método de instancia. Los parámetros correspondientes son cadena de patrón, formato de reemplazo y cadena de texto). También puede agregar los parámetros de guardado que faltan para limitar el número de sustituciones y modos de coincidencia. Al agrupar cadenas de patrones, se puede lograr el reemplazo formateado de cadenas (similar al método de formato de cadenas) para lograr tareas específicas.

import?re text?=?'today?is?2020-03-05' print(re.sub('-',?'',?text))?#'today?is? 20200305' print(re.sub('-',?'',?texto,?1))?#'hoy?es?202003-05' print(re.sub('(\d{4})-( \d{2})-(\d{2})',?r'\2/\3/\1',?text))?#'hoy?es?05/03/2020'

Una variante de re.sub es re.subn. La diferencia es que devuelve una tupla de 2 elementos, donde el primer elemento es el resultado del reemplazo y el segundo es el número de reemplazos.

importar. ?re texto?=?'hoy?es?2020-03-05' print(re.subn('-',?'',?text))?#('hoy?es?20200305',?2)

Dividir: dividir

También puede llamar a expresiones regulares para lograr una división específica de cadenas, lo que equivale a una versión mejorada del método .split() para lograr la división en un modo específico. y devolver una lista de resultados cortada

import?re text?=?'today?is?a?re?test,?what?do?you?mind?' print(re.split(',' ,?text) )?#['today?is?a?re?test',?'?what?do?you?mind?'] 04 Resumen

El módulo re en Python proporciona información de uso común expresiones regulares Métodos, cada método incluye dos formas: llamada a método de clase (como re.match) o llamada a instancia de cadena de patrón (pattern.match)

Funciones de coincidencia de uso común: match/fullmatch

Funciones de búsqueda de uso común: buscar/findall/finditer

Funciones de reemplazo de uso común: sub/subn

Funciones de corte de uso común: dividir

Y otras allí Hay muchos métodos, pero no se usan con mucha frecuencia. Para obtener más detalles, consulte la documentación oficial.

Además, Python también tiene una biblioteca de expresiones regulares de terceros para elegir.

Este artículo se puede entender en un artículo. Con esto concluye el artículo sobre las funciones comunes de las expresiones regulares de Python. ¡Espero que me apoyen en el futuro!