0
votes

La fonction check_time vérifie le format de l'heure d'une horloge de 12 heures

## - Élément de liste ## l'heure est comprise entre 1 et 12, sans zéro non significatif, suivi de deux points, puis des minutes entre et 59, puis d'un espace facultatif, puis AM ou PM, en majuscules ou minuscules. ## ##

import re
def check_time(text):
  pattern = 
  result = re.search(pattern, text)
  return result != None

print(check_time("12:45pm")) # True
print(check_time("9:59 AM")) # True
print(check_time("6:60am")) # False
print(check_time("five o'clock")) # False


2 commentaires

Quelle est la question?


La fonction check_time vérifie le format de l'heure d'une horloge de 12 heures, l'heure est comprise entre 1 et 12, sans zéro non significatif, suivi de deux points, puis des minutes entre et 59, puis d'un espace facultatif, puis AM ou PM, dans la majuscule ou la minuscule. J'ai trouvé la réponse et j'ai joint la réponse ci-dessous


4 Réponses :


4
votes
import re
def check_time(text):
  pattern = r"\b((1[0-2]|1?[1-9]):([0-5][0-9])( ?([AaPp][Mm])))"
  result = re.search(pattern, text)
  return result != None

print(check_time("12:45pm")) # True
print(check_time("9:59 AM")) # True
print(check_time("6:60am")) # False
print(check_time("five o'clock")) # False

This satisfies the condition

0 commentaires

3
votes
import re
def check_time(text):
    pattern = r'(1[012]|[1-9]):[0-5][0-9][ ]{0,1}?(am|pm|AM|PM)'
    result = re.search(pattern, text)
    return result != None

print(check_time("12:45pm")) # True
print(check_time("09:59 AM")) # True
print(check_time("6:60am")) # False
print(check_time("6:02am")) # True
print(check_time("five o'clock")) # False

0 commentaires

0
votes

Bien que cela puisse être une solution plus profane, mais le code semble moins compliqué.

pattern = r"^(0?[1-9]|1[0-2]):[0-5][0-9]\s?[AaPp][Mm]$"

ou vous pouvez opter pour la méthode habituelle comme:

hours_limit = 12 
pattern = r"^[1-hours_limit]:[0-5][0-9]\s?[AaPp][Mm]$"
text = "2:59 pm"
print(re.search(pattern, text))

0 commentaires

0
votes

J'espère que cela vous aidera à comprendre.

pattern = r"(1[012]|[1-9]):([0-5][0-9])(\s)?(?i) 
(am|pm)"


0 commentaires