Funktionen von Modulen für reguläre Ausdrücke, die in Python häufig persönlich verwendet werden

Ich vergesse oft, aber das offizielle Dokument enthält zu viel Text und ist jedes Mal schwer zu überprüfen. Es handelt sich also um ein Memorandum. ,. Wir planen, bei Bedarf weitere hinzuzufügen.

import re

Beachten Sie übrigens, dass "from sympy import *" zu einer "re" -Funktion führt, die den Realteil zurückgibt.

Objekt abgleichen

Das passende Teil herausnehmen ...

filename = 'Back_in_the_U.S.S.R.m4a'
m = re.match(r'([\w\.-]+?)\.(\w+)$', filename)
print(m.group(0)) #Das ganze Spiel(m.group()Gleichwertig?)
print(m.group(1)) #1. Gruppe
print(m.group(2)) #Zweite Gruppe
print(m.groups()) #Taple die gesamte Gruppe

out


Back_in_the_U.S.S.R.m4a
Back_in_the_U.S.S.R
m4a
('Back_in_the_U.S.S.R', 'm4a')

Benennen Sie die Gruppe mit "(? P )" und greifen Sie über das Schlüsselwort zu.

filename = 'Back_in_the_U.S.S.R.m4a'
m = re.match(r'(?P<basename>[\w\.]+?)\.(?P<ext>\w+)$', filename)
print(m.group('basename')) #(?P<basename> )Übereinstimmende Zeichenfolge
print(m.group('ext')) #(?P<ext> )Übereinstimmende Zeichenfolge
print(m.groupdict()) #Benannte Gruppen im Wörterbuch

out


Back_in_the_U.S.S.R
m4a
{'basename': 'Back_in_the_U.S.S.R', 'ext': 'm4a'}

Verwenden Sie die übereinstimmende Zeichenfolge zum Ersetzen

Zum Beispiel, um \ ruby {return method} {kibyuho} von $ \ LaTeX $ durch<ruby> Andachtsmethode <rt> kibyuho </ rt> </ ruby>zu ersetzen ...

print(re.sub(r'\\ruby\{(\w+)\}\{(\w+)\}',
             r'<ruby>\1<rt>\2</rt></ruby>',
             r'\ruby{Apokalypse}{Kibuho}'))

out


<ruby>Apokalypse<rt>Kibuho</rt></ruby>

Verwenden Sie eine Gruppe mit dem Namen "(? P )". Verwenden Sie beim Referenzieren "\ g ".

print(re.sub(r'\\ruby\{(?P<rb>\w+)\}\{(?P<rt>\w+)\}',
             r'<ruby>\g<rb><rt>\g<rt></rt></ruby>',
             r'\ruby{Apokalypse}{Kibuho}'))

out


<ruby>Apokalypse<rt>Kibuho</rt></ruby>

Es ist verwirrend mit dem HTML-Tag, aber ich habe das gleiche Ergebnis erhalten.

Listen Sie alle übereinstimmenden Teile auf

Um den gesamten Inhalt des HTML-Elements "em" oder "strong" abzurufen ...

src = r'<em>Wahlsatz</em>Vorausgesetzt, in jedem Satz<strong>Sie können die Bestellung aufgeben</strong>.'
re.findall(r'<(em|strong)>(.*?)</\1>', src)

out


[('em', 'Wahlsatz'), ('strong', 'Sie können die Bestellung aufgeben')]

Ersetzen Sie, indem Sie das übereinstimmende Teil an die Funktion übergeben

Um cm im Text irgendwie in m zu ändern ...

def cm2m(m): #Bereiten Sie eine Funktion vor, die ein Übereinstimmungsobjekt als Argument verwendet
    value = m.group(1)
    return str(float(value)/100) + 'm'
print(re.sub(r'(\d+)cm', cm2m, '271cm +314 cm ist 585 cm.'))

out


2.71m + 3.14m ist 5.Es ist 85m.

Ich frage mich, ob Lambda für eine einfache Verarbeitung geeignet ist, für die keine Funktion definiert werden muss.

print(re.sub(r'(\d+)cm', lambda m: str(float(m.group(1))/100) + 'm', '271cm +314 cm ist 585 cm.'))

out


2.71m + 3.14m ist 5.Es ist 85m.

Verschachtelte Klammern

Verwenden Sie die Wiederholung. Da es sich jedoch um eine Funktion handelt, die der Standard "re" nicht hat, verwenden Sie "regex". Wenn es nicht installiert ist, verwenden Sie pip install regex usw. Das Folgende entspricht dem \ frac {} {} `von $ \ LaTeX $ (vielleicht).

import regex
pattern_frac = r'\\frac(?<rec>\{(?:[^{}]+|(?&rec))*\}){2}'
m = regex.search(pattern_frac, r'1 + \frac{\int_{a}^{b} f(x)\,dx }{\sum_{k=1}^{n}a_{k}}')
print(m.group())

out


\frac{\int_{a}^{b} f(x)\,dx }{\sum_{k=1}^{n}a_{k}}

Recommended Posts

Funktionen von Modulen für reguläre Ausdrücke, die in Python häufig persönlich verwendet werden
Regulärer Ausdruck in Python
Verwenden Sie den let-Ausdruck in Python
Eine persönlich verwendete Vorlage zum Erstellen von Discord BOT in Python (Notizen)
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
Verwenden Sie print in Python2 lambda expression
Start / End-Match im regulären Python-Ausdruck
Verwendung regulärer Ausdrücke in Python
Ein Memo, das ich schnell in Python geschrieben habe
[Vollständiges Memorandum] Eine Sammlung von Codes, die ich oft benutze, aber nicht erinnern kann
Ich möchte Python in der Umgebung von pyenv + pipenv unter Windows 10 verwenden
Sprechen Sie über die Funktionen, für die Pandas und ich im Projekt verantwortlich waren
Ich habe die Geschwindigkeit regulärer Ausdrücke in Ruby, Python und Perl (Version 2013) verglichen.
Zusammenfassung der Verwendung von MNIST mit Python
Verwenden Sie verschiedene Rabbimq-Funktionen mit Python Pika
Ich habe einige der neuen Funktionen von Python 3.8 touched angesprochen
Symbolischer Gruppenname für reguläre Ausdrücke in Python / Ruby
[Frage] Was passiert, wenn Sie% in Python verwenden?
Grundlagen des Eingabe- / Ausgabebildschirms mit tkinter in python3
Ich habe versucht zusammenzufassen, wie man Matplotlib von Python verwendet
Eine Code-Sammlung, die häufig in persönlichem Python verwendet wird
Importieren / laden Sie Module, die sich in Python geändert haben, dynamisch
Verwenden Sie Cursur, das in Python automatisch mit sqlite3 geschlossen wird
Ein Liner, der mit Python ein Umfangsverhältnis von 1000000 Stellen ausgibt
Verwenden wir die offenen Daten von "Mamebus" in Python
Ich habe versucht zusammenzufassen, wie man Pandas von Python benutzt
Module, die die Shell in Python durchlaufen können
kanonischer Python-Ausdruck oder Match-Objekt-Memo
Ich möchte R-Datensatz mit Python verwenden
Liste der Python-Module
Regulärer Ausdruck in regex.h
Verwenden Sie config.ini mit Python
Verwenden Sie Datumsangaben in Python
Verwenden Sie Valgrind mit Python
Python-Memo für reguläre Ausdrücke
Verwenden Sie den Profiler in Python
Python> Link> Mid-Line-Kommentar in Python?> Mir wurde gesagt, dass es besser ist, benannte Argumente zu verwenden.
Python3-Verarbeitung, die in Paiza verwendbar zu sein scheint
Python-Bedingungsextraktion aus der Liste, die ich oft vergesse
Python - Ermitteln Sie die Anzahl der Gruppen im regulären Ausdruck
Ich habe versucht, "ein Programm, das doppelte Anweisungen in Python entfernt"
Ich habe verschiedene Methoden der Kommunikation zwischen Prozessen bei der Mehrfachverarbeitung von Python3 gemessen
Vergleich der Verwendung von Funktionen höherer Ordnung in Python 2 und 3
Ich möchte die Natur von Python und Pip kennenlernen
Ein Memorandum, das Sie häufig mit Selen in Python verwenden
Reproduzieren Sie den regulären Python-Ausdruck r '\ w (? U)' in JavaScript
Eine Reihe von Skriptdateien, die Wordcloud mit Python3 ausführen
Ich habe versucht, das Blackjack of Trump-Spiel mit Python zu implementieren
[Python3] Liste der Websites, auf die ich beim Starten von Python verwiesen habe
Mal sehen, wie def in Python verwendet wird
Verwenden Sie das Messprotokoll mit Python
Verwenden Sie die Rückruffunktion in Python
Verwenden Sie den Parameterspeicher in Python
Verwenden Sie den HTTP-Cache in Python
Python-Theorie regulärer Ausdruck Anmerkungen