Nivel 1: compilación de expresiones regulares
detalles de la misión
Hemos aprendido mucho sobre las expresiones regulares, entonces, ¿qué es la compilación de expresiones regulares? Esta tarea es para:
-
Use
compile
expresiones regulares compiladas; -
Use expresiones regulares compiladas para hacer coincidir números en cadenas.
información relacionada
compilación de expresiones regulares
compile
La función se usa para compilar la expresión regular y devuelve un objeto de expresión regular para que lo usen funciones como match()
, search()
, findall()
etc.
Los ejemplos son los siguientes:
import re
str ='1Ab2Cdef3ds5ds548s4ds848we8rt6g46d46df48t6ds6x48g6s'
pattern = re.compile('\D') # 编译正则表达式,匹配不是数字的字符
pattern_Math = pattern.match(str) # 决定RE是否在字符串刚开始的位置匹配。如果满足,则返回一个match对象;如果不满足,返回空
print(pattern_Math) # 返回被RE匹配的字符串
producción:
None
Los pasos generales usados re
son: primero compilar la forma de cadena de la expresión regular en pattern
una instancia; luego usar pattern
la instancia para procesar el texto y obtener el resultado coincidente (una Match
instancia (valor True
)); finalmente usar Match
la instancia para obtener información y realizar otras operaciones. Las expresiones regulares que se usan con frecuencia se pueden compilar en objetos de expresiones regulares, lo que mejora la velocidad de ejecución del programa.
Una simple modificación al código anterior:
math_Group = pattern.match(str,1,10) # 查找从索引 1 开始 10 结束
print(math_Group.group()) # 返回被RE匹配的字符串
producción:
A
Se puede ver que el resultado de la coincidencia es diferente al anterior, porque el índice comienza a coincidir desde 1 y el primer carácter ya no es un número, por lo que la coincidencia es exitosa. Echemos un vistazo findall()
al uso.
pattern_Find1 = pattern.findall(str) # 找到RE匹配的所有子串,并把它们作为一个列表返回
print(pattern_Find1) # 返回一个列表
producción:
['A', 'b', 'C', 'd', 'e', 'f', 'd', 's', 'd', 's', 's', 'd',
's', 'w', 'e', 'r', 't', 'g', 'd', 'd', 'f', 't', 'd', 's', 'x', 'g',
's']
findall()
También es posible definir las posiciones inicial y final del índice.
pattern_Find2 = pattern.findall(str,5,10) # 查找从索引 5 开始到 10 结束的所有子串,并把它们作为一个列表返回
print(pattern_Find2)
producción:
['d', 'e', 'f', 'd']
requisitos de programación
Begin - End
Lea atentamente el código de la derecha y complemente el código en el área de acuerdo con las indicaciones del método Las tareas específicas son las siguientes:
-
Use
compile
expresiones regulares compiladas; -
Observe las reglas de los tres conjuntos de prueba a la derecha y use la expresión regular compilada para hacer coincidir los números en la cadena.
instrucción de prueba
Después de complementar el código, haga clic en Evaluación y la plataforma probará el código que escribió. Cuando su resultado sea consistente con el resultado esperado, se aprobará.
Entrada de prueba: 010-12345
Salida esperada:('010', '12345')
实现代码:
importar re
def re_teléfono(cadena):
#*********** Comenzar **********#
re_entrada = '^(\d{3})-(\d{3,8})$'
re_telefono = re.compilar(re_entrada)
re_grupo = re_telefono.match(str).grupos()
#*********** Fin **********#
volver re_grupo
Captura de pantalla del código:
resultado de la operación: