Python re.search()-Methode

Python re 模块Python-re-Modul


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 Beispielre.IGNORECASE、re.MULTILINEusw.

Funktionsbeschreibung

  • Rückgabewert: Wenn eine Übereinstimmung gefunden wird, gibt sie einmatchObjekt 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

import re

# 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:

  1. r'\d+\.\d+'Entspricht einer oder mehreren Ziffern, gefolgt von einem Punkt, dann einer oder mehreren Ziffern (Format der Versionsnummer).
  2. re.search()Gibt das Objekt der ersten Übereinstimmungsposition zurück.
  3. result.group()Gibt den übereinstimmenden Textinhalt zurück.
  4. 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

import re

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

import re

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

import re

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.

Python re 模块Python-re-Modul

Andere Erweiterungen