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!