Comprenda inmediatamente las funciones comunes de las expresiones regulares de Python.
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 el directorio raíz de Python (por ejemplo...\Python\Python37\Lib). Proporciona principalmente tres métodos de operación de cadenas:
Búsqueda/coincidencia de caracteres
Reemplazo de caracteres
Segmentación de caracteres
Porque es una cadena orientada a caracteres escriba el módulo, por lo que tenemos que 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 una cadena Unicode (tipo str comúnmente usado) o una cadena de bytes de 8 bits (2 dígitos de 16 dígitos hexadecimales, como \xe5), pero deben ser del mismo tipo.
02 Búsqueda/coincidencia de cadenas
Precompilación: compilación
Antes de introducir la función de coincidencia de búsqueda, necesitamos conocer la función de compilación de re, que puede convertir una Las cadenas de patrones se compilan en tipos de expresiones regulares para una rápida coincidencia y reutilización.
¿Importado? re modo? =?Recompilar(r'[a-z]{2,5}') tipo (modo)? #responder. Patrón
Este ejemplo crea un objeto de expresión regular llamado patrón (re.pattern), que se utiliza para hacer coincidir una cadena de patrón que consta de 2 a 5 letras minúsculas. Cuando utilice otras funciones de expresión regular en el futuro, puede utilizar el patrón para realizar llamadas a métodos.
Coincidencia: Coincidencia
La función de coincidencia se utiliza para hacer coincidir desde el principio de una cadena de texto. Si la coincidencia es exitosa, se devuelve el objeto de coincidencia correspondiente. En este momento, puede devolver el resultado de la coincidencia llamando al método group(), o puede usar el método span() para devolver el rango de subíndice inicial y final de la coincidencia. De lo contrario no se devuelve nada.
¿Importado? re modo? =?Recompilar(r'[a-z]{2,5}') texto1? =?Esto? ¿Sí? ¿respuesta? ¿re? ¿Resultados de la prueba? =?patrón coincidencia(texto 1)imprimir(RES)? #¿si? res:? imprimir (res.grupo())? #¿este? imprimir (res.span())? #(0,?4) texto2? =?Sí? ¿este? ¿Sí? ¿respuesta? ¿re? Prueba 'print(pattern . match(text 2))#None
La función de coincidencia también tiene una función variante fullmatch, que devuelve una coincidencia si y solo si la cadena de patrón y la cadena de texto coinciden completamente con el Objeto, de lo contrario, no se devuelve Ninguno.
Búsqueda: Buscar
Coincidencia solo proporciona resultados coincidentes comenzando desde el principio 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 cualquier posición coincide con éxito, el objeto coincidente se puede devolver inmediatamente, o se puede llamar al método span() para obtener los intervalos inicial y final, y se puede llamar al método de grupo para obtener la cadena de texto coincidente.
¿Importado? re modo? =?re .compilar(r '\ s[a-z]{ 2 } ')texto 1? =?Esto? ¿Sí? ¿respuesta? ¿re? ¿Resultados de la prueba? =?patrón buscar(texto 1)imprimir(RES)? #¿si? res:? imprimir (res.grupo())? #¿Sí? imprimir (res.span())? #(4,?7)Modo 2? =?Recompilar(r'\s[a-z]{5}') texto2? =?Sí, esto? ¿Sí? ¿respuesta? ¿re? test print(mode2.search(text2))#None
Tanto la coincidencia como la búsqueda se utilizan para encontrar un único resultado. La única diferencia es que el primero juega desde la posición inicial y el segundo 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 y se utiliza para encontrar todos los resultados coincidentes. Por ejemplo, en la extracción de información del rastreador, es muy conveniente extraer todos los campos coincidentes.
¿Importado? re modo? =?re.compile(r'\s[a-z]{2,5}') texto1? =?Esto? ¿Sí? ¿respuesta? ¿re? ¿Resultados de la prueba? =?patrón .buscar todo(texto 1)imprimir(RES)? #['?Sí',? ? re',? ? Test']
Findall devuelve un tipo de objeto de lista o una lista vacía cuando no hay ningún objeto coincidente. Para evitar devolver una gran cantidad de resultados coincidentes al mismo tiempo y ocupar demasiada memoria, 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 grupo. y abarcar métodos para obtener los resultados correspondientes.
¿Importado? re modo? =?re.compile(r'\s[a-z]{2,5}') texto1? =?Esto? ¿Sí? ¿respuesta? ¿re? ¿Resultados de la prueba? =?patrón .finditer(texto 1)para? r? ¿existir? res:? print(r.group())" " "? ¿En serio? re? Test ""
Cuando la cadena de patrón coincidente es relativamente simple o solo se necesitan palabras para llamar, todos los métodos anteriores también pueden llamar a re Función de clase directa, no se requiere compilación previa. En este momento, el primer parámetro de cada método es la cadena de patrón
Import?recompile(r'\d{2,5}' ). ? re? re.findall('[a-z]+',? text)? #['this',? test'] Reemplazo/segmentación
Reemplazo: sub/subred
Cuando es necesario reemplazar condicionalmente una cadena de texto, se puede lograr llamando a re.sub (por supuesto, también se puede hacer llamando al método Compile before de la instancia), los parámetros correspondientes son cadena de patrón, formato de reemplazo y cadena de texto. ¿También puede limitar la cantidad de reemplazos y patrones coincidentes agregando parámetros predeterminados para lograr la optimización de formato (similar al método de formato de cadena) para lograr tareas específicas? '',?Texto)? # 'Hoy? 20200305 'Responder('-',?Texto,?1)?# '¿Hoy? ' (\ d { 4 })-(\ d { 2 })-(\ d { 2 })',? r'\2/\3/\1 ',? text)? 'Hoy? 05/03/2020'
Un método variante de re2 es re2. que devuelve una tupla de 2 elementos, donde el primer elemento es el resultado del reemplazo y el segundo elemento es el número de reemplazos
¿Responder al mensaje de texto? =? re.subn('-',?' text))? ? 20200305',?2)
Dividir:
También se pueden llamar expresiones regulares para lograr una segmentación específica de la cadena. , que es equivalente al método split(). ¿Implementar un patrón específico de división y devolver una lista de resultados? ¿Te importa?
El módulo Re en Python proporciona métodos comunes para expresiones regulares. 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 búsqueda más utilizadas: match/fullmatch
Funciones de búsqueda más utilizadas: search/findall/finder.
Funciones alternativas de uso común: sub/subn
Funciones de corte de uso común: dividir
Existen muchos otros métodos, pero no son muy comunes. Consulte la documentación oficial para obtener más detalles.
Además, Python también tiene una biblioteca de expresiones regulares de terceros para elegir.
Este es un artículo sobre cómo comprender las funciones comunes de las expresiones regulares de Python. ¡Espero que me apoyéis más en el futuro!