Computer Code Python CCP 14 : expressions régulières [GitHub + Steemit]

in fr •  6 years ago 

Table of Contents

  1. Trouver un numéro de téléphone américain SANS expression régulière
  2. Trouver un numéro de téléphone américain AVEC expression régulière
  3. Bilan
  4. Pour aller plus loin

Trouver un numéro de téléphone américain SANS expression régulière

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

def answer(text):
    if isPhoneNumber(text):
    print(text + ' est un numéro américain')
    else:
    print(text + " n'est pas un numéro américain")

answer('415-555-4242')
answer('04-91-50-50-97')

Trouver un numéro de téléphone américain AVEC expression régulière

import re

# version américaine
americanPhoneNumRegex = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')
mo = americanPhoneNumRegex.search('My american number is 415-555-4242.') # match object
if mo:
    print('Numéro de téléphone américain')
print('American phone number found: ' + mo.group())

# version française
frenchPhoneNumRegex = re.compile(r'\d\d-\d\d-\d\d-\d\d-\d\d')
mo2 = frenchPhoneNumRegex.search('My american number is 01-77-50-59-42.') # match object
if mo2:
    print('Numéro de téléphone français')
print('Numéro de téléphone français trouvé : ' + mo2.group())

Bilan

Nous avons vu dans ce cours :

  • que les problèmes de recherches de motifs dans des chaînes de
    caractères peuvent conduire à des programmes lourds si on
    n'utilise pas les bons outils
  • que les expressions régulières permettent de résoudre ce genre de
    problème efficacement
  • qu'il reste encore beaucoup de choses à découvrir avec les
    expressions régulières
  • un outil pour faire des tests https://www.regexpal.com/

Pour aller plus loin

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

Congratulations @lgsp! You have completed the following achievement on the Steem blockchain and have been rewarded with new badge(s) :

Award for the number of posts published

Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word STOP

Do not miss the last post from @steemitboard:

SteemFest³ - SteemitBoard support the Travel Reimbursement Fund.

Support SteemitBoard's project! Vote for its witness and get one more award!