Python re.search()-Methode
re.search()ist PythonreModul, das verwendet wird, umSuchmusterFunktion, die in einer Zeichenkettedurchsucht und findetdie erste Position, die dem angegebenen regulären Ausdruck entspricht.
undre.match()Im Gegensatz zu,re.search()Es muss nicht vom Anfang der Zeichenkette an übereinstimmen; es findet an jeder Position in der Zeichenkette eine Übereinstimmung.
Wortbedeutung: searchbedeutet zu suchen und zu finden.
Grundlegende Syntax und Parameter
re.search()ist eine Funktion auf Modulebene, direkt durchreModulaufruf.
Syntaxformat
re.search(pattern, string, flags=0)
Parameterbeschreibung
- pattern:
- Typ: Zeichenkette (str)
- Beschreibung: Das Muster des regulären Ausdrucks, mit dem abgeglichen werden soll.
- string:
- Typ: Zeichenkette (str)
- Beschreibung: Die Zeichenkette, die durchsucht werden soll, in der eine Übereinstimmung gefunden werden soll.
- Flags:
- Typ: Ganzzahl (int, optional)
- Beschreibung: Flags für reguläre Ausdrücke, die verwendet werden, um den Übereinstimmungsmodus zu steuern. Wie zum Beispiel
re.IGNORECASE、re.MULTILINEusw.
Funktionsbeschreibung
- Rückgabewert: Wenn eine Übereinstimmung gefunden wird, gibt sie ein
matchObjekt zurück; wenn keine Übereinstimmung gefunden wird, gibt sieNone。 - Auswirkung: Gibt die Positionsinformationen der ersten Übereinstimmung zurück, einschließlich des übereinstimmenden Inhalts, der Startposition und der Endposition.
Beispiele
Lassen Sie uns durch eine Reihe von Beispielen von einfach bis komplex gründlich meistern,re.search()die Verwendung beherrschen.
Beispiel 1: Grundlegende Verwendung – Erste Übereinstimmung finden
Beispiel
# Durchsuche die Zeichenkette nach der ersten passenden Zahl
text = "Python 3.9 ist die am häufigsten verwendete Version"
result = re.search(r'\d+\.\d+', text)
if result:
print("Übereinstimmung gefunden:", result.group()) # Ausgabe: 3.9
print("Startposition der Übereinstimmung:", result.start()) # Ausgabe: 7
print("Endposition der Übereinstimmung:", result.end()) # Ausgabe: 10
Erwartete Ausgabe:
找到匹配: 3.9 匹配起始位置: 7 匹配结束位置: 10
Code-Erklärung:
r'\d+\.\d+'Entspricht einer oder mehreren Ziffern, gefolgt von einem Punkt, dann einer oder mehreren Ziffern (Format der Versionsnummer).re.search()Gibt das Objekt der ersten Übereinstimmungsposition zurück.result.group()Gibt den übereinstimmenden Textinhalt zurück.result.start()undresult.end()Gibt den Positionsindex der Übereinstimmung zurück.
Beispiel 2: Übereinstimmung an beliebiger Position finden
re.search()Er kann an jeder Position in der Zeichenkette suchen; das ist seinre.match()Hauptunterschied.
Beispiel
text = "Meine Telefonnummer ist 138-1234-5678, seine Telefonnummer ist 139-9876-5432"
# Finde die erste Telefonnummer
result = re.search(r'\d{3}-\d{4}-\d{4}', text)
if result:
print("Erste Telefonnummer:", result.group())
Erwartete Ausgabe:
第一个手机号: 138-1234-5678
Code-Erklärung:
\d{3}-\d{4}-\d{4}Entspricht dem chinesischen Telefonnummernformat (3 Ziffern - 4 Ziffern - 4 Ziffern).re.search()Liefert zurück, sobald die erste Übereinstimmung gefunden wurde; die Suche wird nicht fortgesetzt.
Beispiel 3: Flags verwenden, um Groß-/Kleinschreibung zu ignorieren
Indem Sieflagsdem Parameter können Sie das Übereinstimmungsverhalten ändern, z. B. die Groß-/Kleinschreibung ignorieren.
Beispiel
text = "Python ist eine mächtige Programmiersprache"
# re.IGNORECASE verwenden, um Groß-/Kleinschreibung zu ignorieren
result = re.search(r'python', text, re.IGNORECASE)
if result:
print("Gefunden:", result.group()) # Ausgabe: Python
Erwartete Ausgabe:
找到: Python
Code-Erklärung:
re.IGNORECASEMacht die Übereinstimmung unabhängig von Groß-/Kleinschreibung, sodass es "Python" abgleichen kann.
Beispiel 4: Gruppeninhalt extrahieren
Runde Klammern()kann Gruppen erstellen, um bestimmte Teile von Interesse zu extrahieren.
Beispiel
text = "Benutzer-E-Mail: [email protected]"
# Verwende Gruppen, um den Benutzernamen und die Domain zu extrahieren
result = re.search(r'(\w+)@(\w+\.\w+)', text)
if result:
print("Vollständige Übereinstimmung:", result.group()) # [email protected]
print("Gruppe 1:", result.group(1)) # user
print("Gruppe 2:", result.group(2)) # example.com
Erwartete Ausgabe:
完整匹配: [email protected] 第1个分组: user 第2个分组: example.com
Code-Erklärung:
- Runde Klammern
()zwei Gruppen erstellen. result.group(1)undresult.group(2)Extrahiere jeweils den Inhalt der beiden Gruppen.
Andere Erweiterungen
Python-re-Modul