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.
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
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'}
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
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.
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')]
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.
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}}