Ich habe versucht, mit Python einen regulären Ausdruck für "Betrag" zu erstellen

Fazit

Hier ist der reguläre Ausdruck von "Betrag" durch Python.

Die Version am Ende des Kreises finden Sie weiter unten.

pattern = r'^(0|[1-9]\d*|[1-9]\d{0,2}(,\d{3})+)Kreis'

# OK
#0 Yen
# 1,000 Yen
#100 Yen
#12345 Yen
#2000 Yen
#1234 Yen
#1000 Yen

# NG
# 0,000 Yen
#000 Yen
# ,Kreis
# 10,00 Yen

Die Startversion von \ (Yen-Marke) lautet wie folgt.

pattern = r'^¥(0|[1-9]\d*|[1-9]\d{0,2}(,\d{3})+)$'

# OK
# ¥0
# ¥1,000
# ¥100
# ¥12345
# ¥2000
# ¥1234
# ¥1000

# NG
# ¥0,000
# ¥000
# ¥,
# ¥10,00

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-20 13.32.32.png

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

Lassen Sie uns regelmäßig Geld ausdrücken

Version am Ende des Kreises

Schreiben wir den Code sofort. Importieren Sie zunächst die Bibliothek für die Verwendung regulärer Ausdrücke.

import re

Als allererstes 1000 Yen Erstellen wir einen regulären Ausdruck, der der Zeichenfolge entspricht.

pattern = r'1000 Yen'

Natürlich ist dies eine genaue Übereinstimmung, also stimmt es überein. Lassen Sie uns mit dem Code überprüfen.

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

Die übereinstimmende Zeichenfolge wird angezeigt. Der Einfachheit halber wird von nun an nur noch das Muster des regulären Ausdrucks beschrieben.

Neben "1000 Yen" gibt es "2000 Yen" und "1234 Yen". Die regulären Ausdrücke, die diesen entsprechen, lauten wie folgt.

pattern = r'\d\d\d\d Yen'

Die verwendeten regulären Ausdrücke sind:

Brief Erläuterung
\d Irgendeine Nummer
Beispiel Passende Zeichenfolge
\d\d\d\d 1000, 2000, 1234

Der obige reguläre Ausdruck kann leichter ausgedrückt werden.

pattern = r'\d{4}Kreis'

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} 1000, 2000, 1234

Hiermit können Sie jedoch keine anderen Beträge als vier Ziffern wie "100 Yen" und "12345 Yen" annehmen. Lassen Sie uns mit einer beliebigen Anzahl von Ziffern umgehen.

Der modifizierte reguläre Ausdruck lautet wie folgt.

pattern = r'\d+Kreis'

Die neu verwendeten regulären Ausdrücke lauten wie folgt.

Brief Erläuterung
+ Eine oder mehrere Wiederholungen des vorherigen Zeichens
Beispiel Passende Zeichenfolge
\d+ 1000, 100, 12345

Damit ist es jedoch nicht möglich, eine Zeichenfolge mit ", (Komma)" wie "1.000 Yen" zu verwenden. Erlaube sowohl Kommas als auch Zahlen.

Der modifizierte reguläre Ausdruck lautet wie folgt.

pattern = r'[\d,]+Kreis'

Die neu verwendeten regulären Ausdrücke lauten wie folgt.

Brief Erläuterung
[abc] a,b,Jeder Brief von c
Beispiel Passende Zeichenfolge
[\d,] Nummer oder,(Komma)

Ich habe auch die folgenden regulären Ausdrücke verwendet:

Brief Erläuterung
+ Eine oder mehrere Wiederholungen des vorherigen Zeichens
Beispiel Passende Zeichenfolge
[\d,]+ Nummer oder,(Kamma) eine oder mehrere Wiederholungen

Jetzt können Sie mit Zahlen und (Komma) umgehen.

Dies führt jedoch zu Zeichenfolgen mit falschen Kommapositionen wie ", Kreis" und "10,00 Yen". Das Komma wird so korrigiert, dass es alle 3 Ziffern steht, z. B. "1.000 Yen" oder "1.000.000 Yen".

Der modifizierte reguläre Ausdruck lautet wie folgt.

pattern = r'\d{1,3}(,\d{3})+Kreis'

Die neu verwendeten regulären Ausdrücke lauten wie folgt.

Brief Erläuterung
{m,n} Wiederholen Sie m oder mehr und n oder weniger des vorherigen Zeichens
Beispiel Passende Zeichenfolge
\d{1,3} Zahlen 1 bis 3 Mal wiederholen

Ich habe auch die folgenden regulären Ausdrücke verwendet:

Brief Erläuterung
(abc) Behandle den String abc als Block
Beispiel Passende Zeichenfolge
(,\d{3}) 「,"000", wie z.,(Kamma) ”und 3 Zahlen werden als ein Block behandelt

Wenn Sie dies tun, können Sie die Zeichenfolge nicht ohne Kommas verwenden. Ich werde es so ändern, dass ich nur Zahlen bekommen kann.

pattern = r'(\d+|\d{1,3}(,\d{3})+)Kreis'

Die neu verwendeten regulären Ausdrücke lauten wie folgt.

Brief Erläuterung
(abc|efg) Entweder abc oder efg string
Beispiel Passende Zeichenfolge
(\d+|\d{1,3}(,\d{3})+) 1000, 1,000

Dies führt jedoch auch zu 0-basierten Zeichenfolgen wie "0,000 Yen" und "000 Yen".

Der modifizierte reguläre Ausdruck lautet wie folgt.

pattern = r'([1-9]\d*|[1-9]\d{0,2}(,\d{3})+)Kreis'

Die neu verwendeten regulären Ausdrücke lauten wie folgt.

Brief Erläuterung
[a-c] a,b,Jeder Brief von c
Beispiel Passende Zeichenfolge
[1-9] 1~9 (Zahlen ohne 0)

Ich habe auch die folgenden regulären Ausdrücke verwendet:

Brief Erläuterung
* Wiederholen Sie 0 oder mehr Mal des vorherigen Zeichens
Beispiel Passende Zeichenfolge
\d* Wiederholen Sie die Zahl 0 oder mehrmals

Sie haben jetzt 0-basierte Zeichenfolgen ausgeschlossen. Es müssen jedoch nur 0 Yen erlaubt sein, also fügen Sie dies hinzu.

pattern = r'^(0|[1-9]\d*|[1-9]\d{0,2}(,\d{3})+)Kreis'

Die neu verwendeten regulären Ausdrücke lauten wie folgt.

Brief Erläuterung
^ Der Anfang der Zeichenfolge

Wenn Sie nicht "^ (hat)" hinzufügen, wird "0 Yen" wie "0,000 Yen" als Teilübereinstimmung verwendet.

¥ Anfangsversion

Einige Beträge beginnen sowohl mit ¥ (Yen-Marke) als auch mit Yen. Lassen Sie uns also auch hier einen regulären Ausdruck erstellen. Löschen Sie im vorherigen regulären Ausdruck den letzten "Kreis" und fügen Sie am Anfang "" hinzu.

pattern = r'^¥(0|[1-9]\d*|[1-9]\d{0,2}(,\d{3})+)'

In diesem Fall wird jedoch "¥ 1" von "¥ 1.000" als Teilübereinstimmung angesehen. Die modifizierte Version lautet wie folgt.

pattern = r'^¥(0|[1-9]\d*|[1-9]\d{0,2}(,\d{3})+)$'

Die neu verwendeten regulären Ausdrücke lauten wie folgt.

Brief Erläuterung
$ Ende der Zeichenfolge

Durch Hinzufügen von $ am Ende wird verhindert, dass eine teilweise Übereinstimmung erzielt wird.

Zusammenfassung

Dieses Mal habe ich versucht, mit Python einen regulären Ausdruck für "Betrag" 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 für "Betrag" zu erstellen
Ich habe versucht, mit Python einen regulären Ausdruck von "Zeit" zu erstellen
Ich habe versucht, mit Python einen regulären Ausdruck von "Datum" 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
Ich habe versucht, mit Pandas eine Pferderenn-Datenbank 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 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.
[Python] Ich habe versucht, das Mitgliederbild der Idolgruppe mithilfe von Keras zu beurteilen
Ich habe versucht zusammenzufassen, wie man Matplotlib von Python verwendet
[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.
Python-Übung 100 Schläge Ich habe versucht, den Entscheidungsbaum von Kapitel 5 mit graphviz zu visualisieren
Ich wollte viele Bilder sammeln, also habe ich versucht, "Google Image Download" zu verwenden.
[Python] Ich habe versucht, automatisch einen täglichen Bericht über YWT mit Outlook-Mail zu erstellen