Buscar en la cuenta pública de WeChat "Programador Koala" ¡Bienvenido a seguir!
Es posible que esté familiarizado con la búsqueda de texto, es decir, presione Ctrl-F, ingrese la palabra que desea encontrar. "Expresión regular" es una versión mejorada de Ctrl-F. Las expresiones regulares son geniales, pero si no son programadores, pocas personas las sabrán, aunque la mayoría de los editores de texto y procesadores de texto modernos tienen funciones de búsqueda y búsqueda y reemplazo, que pueden buscarse en base a expresiones regulares. Las expresiones regulares pueden ahorrar mucho tiempo, no solo para los usuarios de software, sino también para los programadores. Aprenda expresiones regulares, problemas que otros necesitan días de trabajo tedioso para resolver, y otros son propensos a errores, y solo necesita escribir teclas para resolver problemas.
A continuación no hay forma de encontrar patrones de texto usando expresiones regulares.
Suponga que desea encontrar el número de teléfono en una cadena y conoce el patrón: 3 dígitos, 1 guión, 3 dígitos, 1 guión y luego 4 dígitos. Por ejemplo: 498-553-5453.
Supongamos que usamos una función llamada isPhoneNumber () para verificar si la cadena coincide con el patrón, devuelve True o False. Abra un nuevo editor de archivos e ingrese lo siguiente:
def isPhoneNumber(text):
if len(text) !=12:
return False
for i in range(0,3):
if not text[i].isdecimal():
return False
if text[3]!='-':
return False
for i in range(4, 7):
if not text[i].isdecimal():
return False
if text[7] != '-':
return False
for i in range(8, 12):
if not text[i].isdecimal():
return False
return True
print('498-553-5453 is a phone number:')
print(isPhoneNumber('498-553-5453'))
print('Moshi moshi is a phone number:')
print(isPhoneNumber('Moshi moshi'))
Al ejecutar el programa, la salida se ve así:
498-553-5453 is a phone number:
True
Moshi moshi is a phone number:
False
Llamar a la función isPhoneNumber () con el parámetro ' 498-553-5453 ' devolverá True, y el parámetro ' Moshi moshi ' devolverá False. La primera prueba falla porque no tiene 12 caracteres.
Se debe agregar más código para encontrar este patrón de texto en cadenas más largas. Reemplace las 4 llamadas a la función de impresión en el código anterior con el siguiente código:
message='Call me at 498-553-5453 tomorrow.415-233-2322 is my office.'
for i in range(len(message)):
chunk=message[i:i+12]
if isPhoneNumber(chunk):
print('Phone number found:' + chunk)
print('Done')
Cuando se ejecuta el programa, el resultado se ve así:
Phone number found:498-553-5453
Phone number found:415-233-2322
Done
En este ejemplo, aunque los caracteres en el mensaje son muy cortos, también puede contener millones de caracteres y el programa aún no tarda 1 segundo en ejecutarse. Los programas similares que usan expresiones regulares para encontrar números de teléfono no se ejecutarán durante más de un segundo, pero escribir dichos programas con expresiones regulares será mucho más rápido.