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
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.
En outre, cela est facile à comprendre sur les expressions régulières Python en général. https://qiita.com/luohao0404/items/7135b2b96f9b0b196bf3
É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?'
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