[PYTHON] Regulärer Ausdruck vorausschauend, nach Yomi

Voraussetzung ist, dass die Bibliothek "re" importiert wird.

import re

Alle folgenden Notationen extrahieren nur den Textteil, und die Bedingungen zum Zeitpunkt der Extraktion werden in Gruppen () angezeigt. Die Bestätigung wird extrahiert, wenn auch die Textbedingungen in der Gruppe übereinstimmen. Negativ wird extrahiert, wenn die Textbedingungen in der Gruppe nicht übereinstimmen.

Name Beschreibungsmethode Überblick
Positiver Ausblick Text(?=xxx) Holen Sie sich den Textteil, wenn xxx übereinstimmt
Negativer Ausblick Text(?!xxx) Textteil abrufen, wenn xxx nicht übereinstimmt
Bejahender Rückblick (?<=xxx)Text Holen Sie sich den Textteil, wenn xxx übereinstimmt
Negativer Ausblick (?<!xxx)Text Textteil abrufen, wenn xxx nicht übereinstimmt

Positiver Ausblick

Durch Einfügen von "(? = Xxx)" nach dem zu extrahierenden Text wird der Textteil extrahiert, wenn der zu extrahierende Text übereinstimmt und der "xxx" -Teil ebenfalls übereinstimmt.

re.findall('AB(?=CDEF)', 'ABCDEF') #['AB']
re.findall('AB(?=DEF)', 'ABCDEF') #[]
re.findall('AB(?=CD)', 'ABCDEF') #['AB']
re.findall('.+(?=CD)', 'ABCDEF') #['AB']
re.findall('AB(?=[A-Z]{2,3})', 'ABCDEF') #['AB']

Negativer Ausblick

Schreiben Sie in negativer Vorausschau nach dem zu extrahierenden Text "(?! Xxx)". Extrahieren Sie den Textteil, wenn der Textteil übereinstimmt und der xxx-Teil nicht übereinstimmt

re.findall('AB(?!CDEF)', 'ABCDEF') #[]
re.findall('AB(?!DEF)', 'ABCDEF') #['AB']
re.findall('AB(?!CD)', 'ABCDEF') #[]

Da dies abgelehnt wird, ist das Ergebnis das Gegenteil der Vorausschau.

Bejahender Rückblick

Durch Schreiben des Textes, den Sie nach "(? <= Xxx)" extrahieren möchten, wird der Textteil extrahiert, wenn der "xxx" -Teil übereinstimmt und der Text auch mit dem Teil übereinstimmt.

re.findall('(?<=ABCD)EF', 'ABCDEF') #['EF']
re.findall('(?<=BC)EF', 'ABCDEF') #[]
re.findall('(?<=)EF', 'ABCDEF') #['EF']

Negativer Ausblick

Durch Schreiben des Textes, den Sie nach "(? <! Xxx)" extrahieren möchten, wird der Textteil extrahiert, wenn der "xxx" -Teil nicht vorhanden ist und der Text mit dem Teil übereinstimmt.

re.findall('(?<!ABCD)EF', 'ABCDEF') #[]
re.findall('(?<!BC)EF', 'ABCDEF') #['EF']
re.findall('(?<!)EF', 'ABCDEF') #[]

Anwendung der positiven Vorausschau

text = 'Python python PYTHON'

re.findall('py(?=thon)', text) #['py']
re.findall('Py|py(?=thon)', 'Python python PYTHON') #['Py', 'py']
re.findall('py(?=thon)', 'Python python PYTHON', re.IGNORECASE) #['Py', 'py', 'PY']

Verwendung, die wahrscheinlich kratzt

text = 'Adresse:Shinjuku-ku, Tokio 〇〇〇〇 Turm\r Klicken Sie hier für die Karte'
re.findall('(?<=:).*(?=\r)', text)[0] #Shinjuku-ku, Tokio 〇〇〇〇 Turm

[Referenzseite] Beherrsche den Blick nach vorne und den Blick hinter reguläre Ausdrücke!

Recommended Posts

Regulärer Ausdruck vorausschauend, nach Yomi
Regulärer Ausdruck Gierig
Regulärer Ausdruck re
Regulärer Ausdruck in regex.h
Regulärer Ausdruck im Pymongo
Regulärer Ausdruck der Datumsnotation
Python-Memo für reguläre Ausdrücke
Matching-Methode für reguläre Ausdrücke
Regulärer Ausdruck in Python
Bestätigungsquiz für reguläre Ausdrücke!
Python-Theorie regulärer Ausdruck Anmerkungen
Julia Quick Note [04] Regulärer Ausdruck
Manipulation regulärer Ausdrücke durch Python
Tool-Tool zur Überprüfung regulärer Ausdrücke
Zerlegen Sie den Hostnamen mit co.jp mit regulärem Ausdruck
String-Ersetzung durch regulären Python-Ausdruck
100 Sprachverarbeitung klopfen 2020: Kapitel 3 (regulärer Ausdruck)
(Python) Hinweise zum Lesen von HTML und zur Verwendung regulärer Ausdrücke
Suchen Sie den Pythonondict-Wörterbuchschlüssel nach regulären Ausdrücken