Educoder: compilación de expresiones regulares de Python

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:

  1. Use compileexpresiones regulares compiladas;

  2. Use expresiones regulares compiladas para hacer coincidir números en cadenas.

información relacionada

compilación de expresiones regulares

compileLa 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:

 
 
  1. import re
  2. str ='1Ab2Cdef3ds5ds548s4ds848we8rt6g46d46df48t6ds6x48g6s'
  3. pattern = re.compile('\D') # 编译正则表达式,匹配不是数字的字符
  4. pattern_Math = pattern.match(str) # 决定RE是否在字符串刚开始的位置匹配。如果满足,则返回一个match对象;如果不满足,返回空
  5. print(pattern_Math) # 返回被RE匹配的字符串

producción:

 
 
  1. None

Los pasos generales usados re​​son: primero compilar la forma de cadena de la expresión regular en patternuna instancia; luego usar patternla instancia para procesar el texto y obtener el resultado coincidente (una Matchinstancia (valor True)); finalmente usar Matchla 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:

 
 
  1. math_Group = pattern.match(str,1,10) # 查找从索引 1 开始 10 结束
  2. print(math_Group.group()) # 返回被RE匹配的字符串

producción:

 
 
  1. 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.

 
 
  1. pattern_Find1 = pattern.findall(str) # 找到RE匹配的所有子串,并把它们作为一个列表返回
  2. print(pattern_Find1) # 返回一个列表

producción:

 
 
  1. ['A', 'b', 'C', 'd', 'e', 'f', 'd', 's', 'd', 's', 's', 'd',
  2. 's', 'w', 'e', 'r', 't', 'g', 'd', 'd', 'f', 't', 'd', 's', 'x', 'g',
  3. 's']

findall()También es posible definir las posiciones inicial y final del índice.

 
 
  1. pattern_Find2 = pattern.findall(str,5,10) # 查找从索引 5 开始到 10 结束的所有子串,并把它们作为一个列表返回
  2. print(pattern_Find2)

producción:

 
 
  1. ['d', 'e', 'f', 'd']

requisitos de programación

Begin - EndLea 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 compileexpresiones 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:

 

 

Supongo que te gusta

Origin blog.csdn.net/qq_57409899/article/details/124111193
Recomendado
Clasificación