Correspondance des motifs de la série Python et expressions régulières

Rechercher dans le compte public WeChat "Programmeur Koala" Bienvenue à suivre!

Vous connaissez peut-être la recherche de texte, c'est-à-dire, appuyez sur Ctrl-F, saisissez le mot que vous recherchez. "Expression régulière" est une version améliorée de Ctrl-F. Les expressions régulières sont excellentes, mais si elles ne sont pas des programmeurs, peu de gens les connaîtront, bien que la plupart des éditeurs de texte et des traitements de texte modernes aient des fonctions de recherche et de recherche et de remplacement, qui peuvent être recherchées sur la base d'expressions régulières. Les expressions régulières peuvent gagner beaucoup de temps, non seulement pour les utilisateurs de logiciels, mais aussi pour les programmeurs. Apprenez les expressions régulières, les problèmes que d'autres ont besoin de jours de travail fastidieux pour résoudre, et d'autres sont sujets à des erreurs, et vous n'avez qu'à taper des clés pour résoudre les problèmes.

 

Vous ne trouverez ci-dessous aucun moyen de trouver des modèles de texte à l'aide d'expressions régulières.

Supposons que vous vouliez trouver le numéro de téléphone dans une chaîne et que vous connaissiez le modèle: 3 chiffres, 1 tiret, 3 chiffres, 1 tiret, puis 4 chiffres. Par exemple: 498-553-5453.

Supposons que nous utilisons une fonction appelée isPhoneNumber () pour vérifier si la chaîne correspond au modèle, elle renvoie True ou False. Ouvrez un nouvel éditeur de fichiers et entrez les informations suivantes:

 

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(47):
      if not text[i].isdecimal():
          return False
      if text[7] != '-':
          return False
  for i in range(812):
      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'))

 

En exécutant le programme, la sortie ressemble à ceci:

 

498-553-5453 is a phone number:
True
Moshi moshi is a phone number:
False

 

L'appel de la fonction isPhoneNumber () avec le paramètre « 498-553-5453 » renvoie True et le paramètre « Moshi moshi » renvoie False. Le premier test échoue car il ne comporte pas 12 caractères.

Plus de code doit être ajouté pour trouver ce modèle de texte dans des chaînes plus longues. Remplacez les 4 appels de fonction d'impression dans le code ci-dessus par le code suivant:

 

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')

 

Lorsque le programme est exécuté, la sortie ressemble à ceci:

 

Phone number found:498-553-5453
Phone number found:415-233-2322
Done

 

Dans cet exemple, bien que les caractères du message soient très courts, il peut également contenir des millions de caractères et l'exécution du programme ne prend toujours pas 1 seconde. Des programmes similaires qui utilisent des expressions régulières pour trouver des numéros de téléphone ne fonctionneront pas plus d'une seconde, mais l'écriture de tels programmes avec des expressions régulières sera beaucoup plus rapide.

Aucun

 

 
 
 

 

 

 

 

 
A publié 13 articles originaux · Likes2 · Visites 577

Je suppose que tu aimes

Origine blog.csdn.net/weixin_40273144/article/details/80294518
conseillé
Classement