Verwendung regulärer Ausdrücke in Python

Es scheint, dass die Suchoperatoren und Muster regulärer Ausdrücke und die Regeln der Suche selbst fast dieselben sind wie bei Perl und PHP.

Die Verwendung der Funktion des regulären Ausdrucks ist völlig anders, daher werde ich sie für mein eigenes Studium und meine eigene Organisation schreiben.

Erwähnt keine kanonischen Suchoperatoren usw.

Grundeinstellung

Sie können reguläre Ausdrücke verwenden, indem Sie die folgenden Bibliotheken laden.

Lesen


import re

Es gibt zwei Möglichkeiten, reguläre Ausdrücke zu verwenden. Eine besteht darin, das zu durchsuchende Muster im Voraus zu kompilieren. Wenn Sie mit dieser Methode mehrmals nach demselben Muster suchen, können Sie mit hoher Geschwindigkeit suchen, ohne das Muster jedes Mal angeben zu müssen. http://docs.python.jp/3/howto/regex.html#compiling-regular-expressions

Dann wird empfohlen, r am Anfang des Musters hinzuzufügen. Ohne r ist dies grundsätzlich in Ordnung. Durch Hinzufügen kann das Backslash-Zeichen in der Zeichenfolge jedoch wie ein Backslash behandelt werden. So schreiben Sie das Muster Es wird leichter zu verstehen sein.

http://docs.python.jp/3/howto/regex.html#the-backslash-plague

compile


pattern = r"ca"
text = "caabsacasca"
repatter = re.compile(pattern)
matchOB = repatter.match(text)

Die andere Möglichkeit besteht darin, ein Muster festzulegen, wenn ohne Kompilierung gesucht wird. In diesem Fall sollten Sie dies verwenden, wenn Sie das Suchmuster nicht wiederverwenden möchten.

NoCompile


pattern = r"ca"
text = "caabsacasca"
matchOB = re.match(pattern , text)

Abrufmethode

Es gibt vier Hauptsuchmethoden. http://docs.python.jp/3/howto/regex.html#performing-matches

Methode/Attribut Zweck
match(pattern, string) Legt fest, ob es mit dem regulären Ausdruck am Anfang der Zeichenfolge übereinstimmt.
search(pattern, string) Bearbeiten Sie die Zeichenfolge, um herauszufinden, wo der reguläre Ausdruck übereinstimmt.
findall(pattern, string) Findet alle Teilzeichenfolgen, die dem regulären Ausdruck entsprechen, und gibt ihn als Liste zurück.
finditer(pattern, string) Findet alle Teilzeichenfolgen, die dem kanonischen Ausdruck entsprechen, und gibt sie als Iterator zurück.

Andere Funktionen (Referenz)

http://docs.python.jp/2.7/library/re.html#re.split

Methode/Attribut Zweck
split(pattern, string) Jedes Mal teilen, wenn es einen Teil gibt, der dem regulären Ausdruck entspricht.
sub(pattern, repl, string) Ersetzen Sie den Teil, der dem regulären Ausdruck entspricht, durch das Zeichen in repl

Schauen wir uns die Suchmethoden einzeln an.

match () Funktion

Dies ist eine Funktion, die bestimmt, ob das Muster am Anfang der Zeichenfolge übereinstimmt. Das matchObject-Objekt geht in matchOB. Verwenden Sie die Funktion .group (), um den übereinstimmenden Teil aus diesem Objekt (str) zu extrahieren (Da es eine andere Funktion zum Extrahieren von Informationen aus dem Objekt als der Funktion group () gibt, wird diese später beschrieben).

match


pattern = r"ca"
text = "caabsacasca"
matchOB = re.match(pattern , text)
if matchOB:
    print matchOB.group()  # 'ca'

Funktion zum Abrufen von Informationen von einem Objekt

Methode/Attribut Zweck
group() Gibt eine Zeichenfolge zurück, die dem regulären Ausdruck entspricht.
start() Gibt die Startposition des Spiels zurück.
end() Gibt die Endposition des Spiels zurück.
span() Match Position(start, end)Gibt einen Taple zurück, der enthält.

search () Funktion

Eine Funktion, die bestimmt, ob ein Teil der Zeichenfolge mit dem Muster übereinstimmt. Im Gegensatz zur Funktion match () stimmt sie auch dann überein, wenn sich das Muster nicht am Anfang der Zeichenfolge befindet. Selbst wenn mehrere Übereinstimmungen vorliegen, wird nur die erste zurückgegeben.

search



pattern = r"ca"
text = "caabsacasca"
matchOB = re.search(pattern , text)

if matchOB:
    print matchOB
    print matchOB.group() #Gibt die übereinstimmende Zeichenfolge zurück# ca
    print matchOB.start() #Gibt die Startposition des Spiels zurück# 0
    print matchOB.end()  #Gibt die Endposition des Spiels zurück# 2
    print matchOB.span()  #Match Position(start, end)Gibt ein Tupel zurück, das enthält# (0, 2)

findall () Funktion

Eine Funktion, die alle Teile der Zeichenfolge, die dem Muster entsprechen, als Liste zurückgibt. Im Gegensatz zu search () können Sie alle passenden Teile erhalten. Der Rückgabewert ist jedoch kein matchObject, sondern nur eine Liste von Zeichenfolgen, sodass group () usw. nicht verwendet werden kann.

findall


pattern = r"ca"
text = "caabsacasca"
#Gibt als Liste alles zurück, was dem Muster entspricht
matchedList = re.findall(pattern,text)
if matchedList:
    print matchedList # ['34567', '34567']

finditer () Funktion

Eine Funktion, die den Teil der Zeichenfolge zurückgibt, der dem Muster mit einem Iterator entspricht. Durch Drehen des Rückgabewerts für Schleife usw. können Sie alle Übereinstimmungspunkte auf dieselbe Weise wie bei der Funktion findall () abrufen, da die Funktion findall () eine Liste zurückgibt, die Funktion finditer () jedoch ein Objekt in der Schleife zurückgibt. , End (), start () usw. sind verfügbar.

finditer


pattern = r"ca"
text = "caabsacasca"
#Gibt alles, was dem Muster entspricht, als Iterator zurück
iterator = re.finditer(pattern ,text)
for match in iterator:
    print match.group()   #Erstes Mal:ca. 2. Mal: ca   
    print match.start()   #Erstes Mal:0 2. Mal: 6      
    print match.end()     #Erstes Mal:2 2. Mal: 8      
    print match.span()    #Erstes Mal: (0, 2)Zweites Mal: (6, 8)

Eigentum

Legen Sie für reguläre Ausdrücke wie Perl am Ende des Musters Eigenschaften wie `/ pattern / s``` (. Entspricht Zeilenumbrüchen) und` / pattern / i``` (Groß- und Kleinschreibung beachten) fest. Sie können, aber in Python tun Sie Folgendes:

match


pattern = r"avSCSA"
text = "AVscsa"
------------------------
#Zu kompilierendes Muster

repatter = re.compile(pattern, re.IGNORECASE)#Unempfindlich
matchOB = repatter.match(text)

------------------------
#Muster nicht zu kompilieren
matchOB = re.match(pattern , text, re.IGNORECASE)#Unempfindlich
--------------------------
if matchOB:
    print match.group()  # ''

Stellen Sie sicher, dass Sie die folgenden Eigenschaften mit `re.``` vor sich verwenden. Wie re. DOTALL`` `` re.L```.

Eigentum Bedeutung
ASCII, A \w, \b, \s,Und\Stimmt d usw. nur mit ASCII-Zeichen mit ihren jeweiligen Eigenschaften überein.
DOTALL, S .Zu jedem Zeichen passen, einschließlich Zeilenumbrüchen
IGNORECASE, I Führt Übereinstimmungen ohne Berücksichtigung der Groß- und Kleinschreibung durch
LOCALE, L Entspricht dem Gebietsschema
MULTILINE, M ^Oder$Handelt auf und stimmt mit mehreren Zeilen überein
VERBOSE, X (for ‘extended’) Sie können redundante reguläre Ausdrücke zur Verfügung stellen, um sie übersichtlicher und verständlicher zu machen.

Wie man mit Japanisch umgeht

Abschließend werde ich erklären, wie man mit Japanisch umgeht, was japanische Pythonisten immer in die Irre führt.

Es scheint, dass der normale Zeichenkettentyp (str) in Ordnung ist.

Ah


matchOB = re.match("Ah","Ah")
print matchOB.group()
#Ah

Was ist, wenn Sie Folgendes tun? Scheint zu sein

[Ah-ゞ]


matchOB = re.match("[Ah-ゞ]","Wenn")
#?

Es ist in Ordnung, wenn Sie Unicode verwenden

u[Ah-ゞ]


matchOB = re.match(u"[Ah-ゞ]",u"Wenn")
#Wenn

Wenn Sie sich also mit Japanisch beschäftigen, lassen Sie es einmal Unicode-Typ werden

Referenz

str→unicode


u = "japanisch".decode("utf-8")

print type(u)
#unicode
print u 
#japanisch

unicode→str


u = u"japanisch".encode("utf-8")

print type(u)
#unicode
print u 
#japanisch

Frage

Auch wenn es um Unicode geht, heißt es, re.U als Option hinzuzufügen, aber ich denke, dass es die gleiche Antwort mit oder ohne sein wird, aber kann mir bitte jemand ~ sagen http://pepper.is.sci.toho-u.ac.jp/index.php?%A5%CE%A1%BC%A5%C8%2FPython%2F%B4%C1%BB%FA%A4%CE%C0%B5%B5%AC%C9%BD%B8%BD

re.U


s = u'Heute ist ein schöner Tag.'
r = re.compile(u'《[^》]*》')
news = r.sub('*', s, re.U)
print s, '>', news 
#Heute ist ein schöner Tag.>Das heutige Wetter ist schön*Hallo

not(re.U)


s = u'Heute ist ein schöner Tag.'
r = re.compile(u'《[^》]*》')
news = r.sub('*', s)
print s, '>', news 
#Heute ist ein schöner Tag.>Das heutige Wetter ist schön*Hallo

Referenz

Diese Seite wurde als Referenz verwendet

Regulärer Ausdruck HOWTO - Python 3.4.1 Dokumentation --http: //docs.python.jp/3/howto/regex.html Eine kurze Zusammenfassung der regulären Ausdrücke in Python --minus9ds Tagebuch --http: //minus9d.hatenablog.com/entry/20120713/1342188160 7.2. Re - Regular Expression Operation - Python 2.7ja1 Dokumentation --http: //docs.python.jp/2.7/library/re.html Umgang mit Japanisch im Python-Modul für reguläre Ausdrücke - Hinweise unter Linux während des Testbetriebs --http: //d.hatena.ne.jp/kakurasan/20090424/p1 Behandeln Sie Japanisch mit regulären Python-Ausdrücken | taichino.com --http: //taichino.com/programming/1272

Recommended Posts

Verwendung regulärer Ausdrücke in Python
Verwendung von SQLite in Python
Wie man MySQL mit Python benutzt
Verwendung von ChemSpider in Python
Verwendung von PubChem mit Python
Verwenden Sie \ d nicht in regulären Python 3-Ausdrücken!
Verwendung von __slots__ in der Python-Klasse
Verwendung ist und == in Python
Verwendung der C-Bibliothek in Python
python3: Verwendung der Flasche (2)
[Python] Verwendung von Liste 1
Verwendung der Python-Bildbibliothek in der Python3-Serie
Verwenden Sie reguläre Ausdrücke in C.
Zusammenfassung der Verwendung von MNIST mit Python
Wie benutzt man Python Argparse?
Python: Wie man pydub benutzt
[Python] Verwendung von checkio
Wie man tkinter mit Python in Pyenv benutzt
Wie man in Python entwickelt
[Python] Verwendung von input ()
Wie benutzt man Python Lambda?
[Python] Verwendung von virtualenv
python3: Verwendung der Flasche (3)
python3: Wie man eine Flasche benutzt
Verwendung von Python-Bytes
[Für Anfänger] Wie man den Befehl say mit Python benutzt!
Ich habe versucht zusammenzufassen, wie man Pandas von Python benutzt
Verwendung des in Lobe in Python erlernten Modells
[Python] Wie man PCA mit Python macht
Python: So verwenden Sie Async mit
[Python] Verwendung der Pandas-Serie
Verwendung von Anfragen (Python Library)
[Python] Verwendung von Liste 3 Hinzugefügt
Verwendung der Python-API von OpenPose
So verpacken Sie C in Python
Python: Verwendung von pydub (Wiedergabe)
Verwendung der Zip-Funktion von Python
Umgang mit Japanisch mit Python
[Python] Verwendung der Typetalk-API
Bei Verwendung regulärer Ausdrücke in Python
[Python] Reguläre Ausdrücke Reguläre Ausdrücke
Verwendung der Methode __call__ in der Python-Klasse
[Einführung in die Udemy Python3 + -Anwendung] 36. Verwendung von In und Not
Verwendung berechneter Spalten in CASTable
Überlappende reguläre Ausdrücke in Python und Java
[Python] Zusammenfassung der Verwendung von Pandas
Dynamisches Definieren von Variablen in Python
So installieren und verwenden Sie pandas_datareader [Python]
So machen Sie R chartr () in Python
[Itertools.permutations] So löschen Sie eine Sequenz in Python
Verwendung von Google Test in C-Sprache
[Python] Verwendung von __command__, Funktionserklärung
So arbeiten Sie mit BigQuery in Python
[Python] Verwendung von import sys sys.argv
Wie bekomme ich Stacktrace in Python?
So zeigen Sie die neunundneunzig Tabelle in Python an
Einfache Möglichkeit, Wikipedia mit Python zu verwenden
So extrahieren Sie einen Polygonbereich in Python