Ich habe versucht, mit Python einen regulären Ausdruck von "Datum" zu erstellen

Fazit

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

Vorbereitung

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.

スクリーンショット 2020-04-19 11.50.19.png

Dies ist auch über Python-reguläre Ausdrücke im Allgemeinen leicht zu verstehen. https://qiita.com/luohao0404/items/7135b2b96f9b0b196bf3

Lassen Sie uns einen regulären Ausdruck für ein Datum erstellen

Westliche Kalenderversion

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.

Japanische Kalenderversion

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'

Zusammenfassung

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.

Recommended Posts

Ich habe versucht, mit Python einen regulären Ausdruck von "Datum" zu erstellen
Ich habe versucht, mit Python einen regulären Ausdruck für "Betrag" zu erstellen
Ich habe versucht, mit Python einen regulären Ausdruck von "Zeit" zu erstellen
Ich habe eine Stoppuhr mit tkinter mit Python gemacht
Ich habe versucht, eine ToDo-App mit einer Flasche mit Python zu erstellen
Ich habe ein ○ ✕ Spiel mit TensorFlow gemacht
Ich habe versucht, Python (3) anstelle eines Funktionsrechners zu verwenden
Ich habe eine einfache Mail-Sendeanwendung mit tkinter von Python erstellt
Ich habe mit PyQt einen einfachen Texteditor erstellt
Ich habe eine Web-API erstellt
[5.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe versucht, mit Pandas eine Pferderenn-Datenbank zu erstellen
[2nd] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[Python] Ich habe versucht, eine stabile Sortierung zu implementieren
[3.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe versucht, mit Python eine Liste von Primzahlen zu erstellen
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Ich habe versucht, mit Boto3 eine Liste der AMI-Namen zu erhalten
Ich habe versucht, mit Python eine 2-Kanal-Post-Benachrichtigungsanwendung zu erstellen
[4.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
[1.] Ich habe versucht, mit Python ein bestimmtes Authenticator-ähnliches Tool zu erstellen
Ich habe versucht, mit Go einen exklusiven Kontrollmechanismus zu erstellen
Ich habe eine Funktion zum Abrufen von Daten aus der Datenbank spaltenweise mithilfe von SQL mit SQLite3 von Python [SQLite3, SQL, Pandas] erstellt.
Ich möchte ein Spiel mit Python machen
Ich habe versucht, eine CSV-Datei mit Python zu lesen
Ich habe versucht, mit Raspeye 4 (Python Edition) ein signalähnliches Signal zu erzeugen.
Ich habe versucht, eine Clusteranalyse von Kunden anhand von Kaufdaten durchzuführen
Ich habe ein Beispiel für den Zugriff auf Salesforce mit Python und Bottle erstellt
Ich habe versucht, Trumps Kartenspiel in Python zu implementieren
Ich möchte eine Webanwendung mit React und Python Flask erstellen
[Python] Ich habe versucht, mit argparse ein einfaches Programm zu erstellen, das in der Befehlszeile funktioniert
Kombinieren Sie sich wiederholende Zeichenfolgen mit regulären Python-Ausdrücken zu einer.
Ich habe versucht, einen "verdammt großen Literaturkonverter" zu machen.
Ich habe versucht, einen periodischen Prozess mit CentOS7, Selenium, Python und Chrome durchzuführen
[Python] Deep Learning: Ich habe versucht, Deep Learning (DBN, SDA) ohne Verwendung einer Bibliothek zu implementieren.
[Patentanalyse] Ich habe versucht, mit Python eine Patentkarte zu erstellen, ohne Geld auszugeben
Ich habe versucht, einen Pseudo-Pachislot in Python zu implementieren
Fortsetzung ・ Ich habe versucht, Slackbot zu erstellen, nachdem ich Python3 studiert habe
[Python] Smasher hat versucht, den Video-Ladevorgang mithilfe eines Generators zu einer Funktion zu machen
Django super Einführung von Python-Anfängern! Teil 2 Ich habe versucht, die praktischen Funktionen der Vorlage zu nutzen
So erstellen Sie ein Python-Paket mit VS Code
[Python] Ich habe versucht, eine Shiritori-KI zu erstellen, die den Wortschatz durch Schlachten verbessert
[Python] Ich möchte aus einer verschachtelten Liste einen Taple machen
Ich habe versucht, einen Übersetzungs-BOT zu erstellen, der mit Discord unter Verwendung von Googletrans funktioniert
[Python] Ich habe versucht, einen lokalen Server mit flask auszuführen
Ich habe versucht, mit Python eine Pseudofraktalfigur zu zeichnen
kanonischer Python-Ausdruck oder Match-Objekt-Memo
Ich habe ein Skript erstellt, das das aktive Fenster mit win32gui von Python aufzeichnet
[Python] Ich habe versucht, Json von Tintenfischring 2 zu bekommen
Ich habe versucht, mit Python auf Google Spread Sheets zuzugreifen
Ich habe versucht, eine verdächtige Person mithilfe von Geolonia-Adressdaten schnell zu einem MAP zu machen
Ich habe versucht, ein Konfigurationsdiagramm mit Diagrammen zu zeichnen
Ich habe versucht, die String-Operationen von Python zusammenzufassen
Ich habe versucht, mit dem Seq2Seq-Modell von TensorFlow so etwas wie einen Chatbot zu erstellen
Ich habe versucht, mit Python Machine Learning ein Echtzeit-Modell zur Trennung von Tonquellen zu erstellen
Ich habe versucht, das Update von "Werde ein Romanautor" mit "IFTTT" und "Werde ein Romanautor API" zu benachrichtigen.
Ich wollte viele Bilder sammeln, also habe ich versucht, "Google Image Download" zu verwenden.