J'ai essayé de créer une expression régulière de "temps" en utilisant Python

Conclusion

Voici l'expression régulière du "temps" par python.

pattern_date = r'((0?|1)[0-9]|2[0-3])[:Temps][0-5][0-9]Minutes?'

# OK
#1:10
# 1:10
# 01:56
# 10:06
# 12:34

# NG
# 99:99

Préparation

L'environnement utilise Google Colaboratory. La version Python est ci-dessous.

import platform
print("python " + platform.python_version())
# python 3.6.9

L'outil de vérification des expressions régulières utilisé: https://regex101.com/ En vérifiant ici, nous allons créer une expression régulière et l'implémenter dans le code.

スクリーンショット 2020-04-20 9.20.18.png

En outre, cela est facile à comprendre sur les expressions régulières Python en général. https://qiita.com/luohao0404/items/7135b2b96f9b0b196bf3

Créons une expression régulière pour le temps

Écrivons le code immédiatement. Tout d'abord, importez la bibliothèque pour utiliser des expressions régulières.

import re

Tout d'abord 12:34 Créons une expression régulière qui correspond à la chaîne de caractères.

pattern = r'12:34'

Bien sûr, il s'agit d'une correspondance exacte, donc elle correspond. Vérifions avec le code.

pattern = r'12:34'
string = r'12:34'
prog = re.compile(pattern)
result = prog.match(string)
if result:
    print(result.group())
# 12:34 

La chaîne de caractères correspondante s'affiche. Désormais, par souci de simplicité, seul le modèle d'expression régulière est décrit.

En plus de "12:34", il existe d'autres heures telles que "01:56" et "10:06". Les expressions régulières qui correspondent à celles-ci sont les suivantes.

pattern = r'\d\d:\d\d'

Les expressions régulières utilisées sont:

lettre La description
\d N'importe quel chiffre
Exemple Chaîne correspondante
\d\d 12, 34, 01, 56, 10, 06

L'expression régulière ci-dessus peut être exprimée plus facilement.

pattern = r'\d{2}:\d{2}'

Les expressions régulières nouvellement utilisées sont les suivantes.

lettre La description
{m} Répéter m fois le caractère précédent
Exemple Chaîne correspondante
\d{2} 12, 34, 01, 56, 10, 06

Cependant, cela entraîne également une chaîne de temps impossible, telle que "99:99".

Cette fois, nous n'autoriserons que les conditions suivantes comme le format hh: mm.

L'expression régulière modifiée est la suivante.

pattern = r'([01][0-9]|2[0-3]):[0-5][0-9]'

Les expressions régulières nouvellement utilisées sont les suivantes.

lettre La description
[abc] a,b,Toute lettre de c
Exemple Chaîne correspondante
[01][0-9] 00~09, 10~19
C'est-à-dire 00~19
2[0-3] 20~23
[0-5][0-9] 00~09, 10~19, …, 50~59
C'est-à-dire 00~59

J'ai également utilisé les expressions régulières suivantes:

lettre La description
(abc|efg) Chaîne abc ou efg
Exemple Chaîne correspondante
([01][0-9]|2[0-3]) 00~19 ou 20~23
C'est-à-dire 00~23

Vous disposez désormais d'une expression régulière qui ne correspond qu'aux conditions ci-dessus.

Cependant, avec cela, les choses qui ne sont pas remplies de 0 (0 avec 0), telles que "1:10", ne peuvent pas être prises. L'expression régulière modifiée est la suivante.

pattern = r'((0?[0-9]|1[0-9])|2[0-3]):[0-5][0-9]'

Les expressions régulières nouvellement utilisées sont les suivantes.

lettre La description
? Répéter 0 ou 1 du caractère précédent
Exemple Chaîne correspondante
0?[0-9] 0~9 ou 00~09

Cela peut également être écrit un peu plus court, comme ceci:

pattern = r'((0?|1)[0-9]|2[0-3]):[0-5][0-9]'

Avec cela, il est possible de gérer celui sans remplissage 0 (remplissage 0).

De plus, modifions-le pour qu'il corresponde non seulement à ": (deux-points)" mais aussi à "- (tiret)" et "heure (minute)".

pattern = r'((0?|1)[0-9]|2[0-3])[:Temps][0-5][0-9]Minutes?'

Résumé

Cette fois, j'ai essayé de créer une expression régulière de «temps» en utilisant Python.

Les chaînes de caractères avec un certain modèle, tel que la date, l'heure et le montant, sont compatibles avec les expressions régulières. Essayez d'extraire diverses chaînes de caractères avec des expressions régulières.

Recommended Posts

J'ai essayé de créer une expression régulière de "temps" en utilisant Python
J'ai essayé de créer une expression régulière de "montant" en utilisant Python
J'ai essayé de créer une expression régulière de "date" en utilisant Python
J'ai fait un chronomètre en utilisant tkinter avec python
J'ai essayé de créer une application todo en utilisant une bouteille avec python
J'ai créé un jeu ○ ✕ avec TensorFlow
J'ai essayé d'utiliser Python (3) au lieu d'un calculateur de fonctions
J'ai créé un éditeur de texte simple en utilisant PyQt
J'ai créé une API Web
[5e] J'ai essayé de créer un certain outil de type Authenticator avec python
[2nd] J'ai essayé de créer un certain outil de type Authenticator avec python
[Python] J'ai essayé d'implémenter un tri stable, alors notez
[3ème] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de créer une liste de nombres premiers avec python
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
J'ai essayé d'obtenir une liste de noms AMI en utilisant Boto3
J'ai essayé de créer une application de notification de publication à 2 canaux avec Python
[4th] J'ai essayé de créer un certain outil de type Authenticator avec python
[1er] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de créer un mécanisme de contrôle exclusif avec Go
J'ai créé une fonction pour récupérer les données de la colonne de base de données par colonne en utilisant sql avec sqlite3 de python [sqlite3, sql, pandas]
Je veux faire un jeu avec Python
J'ai essayé de lire un fichier CSV en utilisant Python
J'ai essayé de faire un signal avec Raspeye 4 (édition Python)
J'ai essayé d'effectuer une analyse de cluster de clients à l'aide des données d'achat
J'ai créé un exemple pour accéder à Salesforce en utilisant Python et Bottle
Python: je souhaite mesurer proprement le temps de traitement d'une fonction
J'ai essayé d'implémenter le jeu de cartes de Trump en Python
Je souhaite créer une application Web en utilisant React et Python flask
[Python] J'ai essayé de créer un programme simple qui fonctionne sur la ligne de commande en utilisant argparse
Combinez des chaînes répétitives en une seule avec des expressions régulières Python.
J'ai essayé de faire un processus périodique avec CentOS7, Selenium, Python et Chrome
[Python] J'ai essayé de juger l'image du membre du groupe d'idols en utilisant Keras
J'ai essayé de résumer comment utiliser matplotlib de python
[Python] Deep Learning: J'ai essayé d'implémenter Deep Learning (DBN, SDA) sans utiliser de bibliothèque.
[Analyse des brevets] J'ai essayé de créer une carte des brevets avec Python sans dépenser d'argent
J'ai essayé d'implémenter un pseudo pachislot en Python
Suite ・ J'ai essayé de créer Slackbot après avoir étudié Python3
[Python] Smasher a essayé de faire du processus de chargement de la vidéo une fonction à l'aide d'un générateur
Django super introduction par les débutants Python! Partie 2 J'ai essayé d'utiliser les fonctions pratiques du modèle
Comment créer un package Python à l'aide de VS Code
[Python] J'ai essayé de créer une IA Shiritori qui améliore le vocabulaire grâce aux batailles
[Python] Je veux faire d'une liste imbriquée un taple
J'ai essayé de créer un BOT de traduction qui fonctionne avec Discord en utilisant googletrans
[Python] J'ai essayé d'exécuter un serveur local en utilisant flask
J'ai essayé de dessiner une pseudo figure fractale en utilisant Python
expression canonique python ou mémo d'objet correspondant
J'ai fait un script pour enregistrer la fenêtre active en utilisant win32gui de Python
[Python] J'ai essayé d'obtenir Json de squid ring 2
J'ai essayé d'accéder aux feuilles de calcul Google en utilisant Python
J'ai essayé de faire MAP rapidement une personne suspecte en utilisant les données d'adresse Geolonia
J'ai essayé de dessiner un diagramme de configuration à l'aide de diagrammes
J'ai essayé de résumer les opérations de chaîne de Python
J'ai essayé de faire quelque chose comme un chatbot avec le modèle Seq2Seq de TensorFlow
J'ai essayé de faire une simulation de séparation de source sonore en temps réel avec l'apprentissage automatique Python
Python pratique 100 coups J'ai essayé de visualiser l'arbre de décision du chapitre 5 en utilisant graphviz
Je voulais collecter beaucoup d'images, j'ai donc essayé d'utiliser "google image download"