Hier ist der reguläre Ausdruck von "Datum" durch Python.
Die Kalenderversion lautet wie folgt.
pattern = r'[12]\d{3}[/\-Jahr](0?[1-9]|1[0-2])[/\-Mond](0?[1-9]|[12][0-9]|3[01])Tag?$'
# OK
#22. Februar 2020
# 2020-2-22
# 2020/2/22
# 1985/01/12
# 2010/12/11
# 2022/02/22
# NG
# 9999/99/99
Die japanische Kalenderversion lautet wie folgt.
pattern = r'(Meiji|Taisho|Showa|Heisei|Reiwa)\d{1,2}Jahr(0?[1-9]|1[0-2])Mond(0?[1-9]|[12][0-9]|3[01])Tag'
# OK
#Reiwa 22. Februar 2002
#22. Februar, 2. Jahr von Reiwa
#22. Februar 1990
#22. Februar 1945
#22. Februar 1918
#22. Februar 1897
# NG
#Reiwa September 99, 1999
Die Umgebung verwendet Google Colaboratory. Die Python-Version ist unten.
import platform
print("python " + platform.python_version())
# python 3.6.9
Das verwendete Tool zur Überprüfung regulärer Ausdrücke: https://regex101.com/ Während wir hier prüfen, erstellen wir einen regulären Ausdruck und implementieren ihn in den Code.
Dies ist auch über Python-reguläre Ausdrücke im Allgemeinen leicht zu verstehen. https://qiita.com/luohao0404/items/7135b2b96f9b0b196bf3
Schreiben wir den Code sofort. Importieren Sie zunächst die Bibliothek für die Verwendung regulärer Ausdrücke.
import re
Als allererstes 2022/02/22 Erstellen wir einen regulären Ausdruck, der der Zeichenfolge entspricht.
pattern = r'2022/02/22'
Natürlich ist dies eine genaue Übereinstimmung, also stimmt es überein. Lassen Sie uns mit dem Code überprüfen.
pattern = r'2022/02/22'
string = r'2022/02/22'
prog = re.compile(pattern)
result = prog.match(string)
if result:
print(result.group())
# 2022/02/22
Die übereinstimmende Zeichenfolge wird angezeigt. Der Einfachheit halber wird von nun an nur noch das Muster des regulären Ausdrucks beschrieben.
Neben "2022/02/22" gibt es weitere Daten wie "1985/01/12" und "2010/12/11". Die regulären Ausdrücke, die diesen entsprechen, lauten wie folgt.
pattern = r'\d\d\d\d/\d\d/\d\d'
Die verwendeten regulären Ausdrücke sind:
Brief | Erläuterung |
---|---|
\d | Irgendeine Nummer |
Beispiel | Passende Zeichenfolge |
---|---|
\d\d\d\d | 2022 |
\d\d | 02, 22 |
Der obige reguläre Ausdruck kann leichter ausgedrückt werden.
pattern = r'\d{4}/\d{2}/\d{2}'
Die neu verwendeten regulären Ausdrücke lauten wie folgt.
Brief | Erläuterung |
---|---|
{m} | Wiederholen Sie m-mal des vorherigen Zeichens |
Beispiel | Passende Zeichenfolge |
---|---|
\d{4} | 2022 |
\d{2} | 02, 22 |
Dies führt jedoch auch zu einer unmöglichen Datumszeichenfolge, z. B. "9999/99/99". Dieses Mal erlauben wir nur die folgenden Bedingungen als JJJJ / MM / TT-Format.
Der modifizierte reguläre Ausdruck lautet wie folgt.
pattern = r'[12]\d{3}/(0[1-9]|1[0-2])/(0[1-9]|[12][0-9]|3[01])'
Die neu verwendeten regulären Ausdrücke lauten wie folgt.
Brief | Erläuterung |
---|---|
[abc] | a,b,Jeder Brief von c |
Beispiel | Passende Zeichenfolge |
---|---|
[12]\d{3} | 1000~2999 |
0[1-9] | 01~09 |
1[0-2] | 10~12 |
[12][0-9] | 10~29 |
3[01] | 30, 31 |
Wir haben auch die folgenden regulären Ausdrücke verwendet.
Brief | Erläuterung |
---|---|
(abc|efg) | Entweder abc oder efg string |
Beispiel | Passende Zeichenfolge |
---|---|
(0[1-9]|1[0-2]) | 01~09 oder 10~12 Das heißt, 01~12 |
(0[1-9]|[12][0-9]|3[01]) | 01~09 oder 10~29 oder 30, 31 Das heißt, 01~31 |
Sie haben jetzt einen regulären Ausdruck, der nur den oben genannten Bedingungen entspricht.
Damit können jedoch Dinge, die nicht mit 0 gefüllt (0 aufgefüllt) sind, wie "2020/2/22", nicht übernommen werden. Der modifizierte reguläre Ausdruck lautet wie folgt.
pattern = r'[12]\d{3}\/(0?[1-9]|1[0-2])\/(0?[1-9]|[12][0-9]|3[01])$'
Die neu verwendeten regulären Ausdrücke lauten wie folgt.
Brief | Erläuterung |
---|---|
? | Wiederholen Sie 0 oder 1 des vorherigen Zeichens |
Beispiel | Passende Zeichenfolge |
---|---|
0?[1-9] | 1~9 oder 01~09 |
Wir haben auch die folgenden regulären Ausdrücke verwendet.
Brief | Erläuterung |
---|---|
$ | Ende der Zeichenfolge |
Ohne dies stimmt "2022/02/22" nur bis "2022/02/2" überein.
Damit ist es möglich, die ohne 0 Auffüllung (0 Auffüllung) zu handhaben.
Ändern wir es außerdem so, dass es nicht nur mit "/ (Schrägstrich)", sondern auch mit "- (Bindestrich)" und "Jahr / Monat (Tag)" übereinstimmt.
pattern = r'[12]\d{3}[/\-Jahr](0?[1-9]|1[0-2])[/\-Mond](0?[1-9]|[12][0-9]|3[01])Tag?$'
Hier ist "\ -" eine Flucht, was bedeutet, dass "- (Schrägstrich)" nicht in einem besonderen Sinne verwendet wird, sondern ein Zeichen ist.
Jetzt haben Sie einen regulären Ausdruck, der nicht nur mit "/ (Schrägstrich)", sondern auch mit "- (Bindestrich)" und "Jahr / Monat (Tag)" übereinstimmt.
Es gibt nicht nur westliche Kalender, sondern auch japanische Kalender wie "22. Februar, 2. Jahr von Reiwa". Lassen Sie uns hier einen regulären Ausdruck erstellen.
Betrachten Sie Folgendes als Bedingungen für japanische Kalenderdaten.
Der reguläre Ausdruck lautet wie folgt.
pattern = r'(Meiji|Taisho|Showa|Heisei|Reiwa)\d{1,2}Jahr(0?[1-9]|1[0-2])Mond(0?[1-9]|[12][0-9]|3[01])Tag'
Dieses Mal habe ich Python verwendet, um einen regulären Ausdruck für "Datum" zu erstellen.
Zeichenketten mit einem bestimmten Muster wie Datum, Uhrzeit und Anzahl sind mit regulären Ausdrücken kompatibel. Versuchen Sie, verschiedene Zeichenfolgen mit regulären Ausdrücken zu extrahieren.