re.search() în Python

Caută prima potrivire a unei expresii regulate oriunde într-un text.

Sintaxă
re.search(model, text, flags=0)

Ce face re.search()

re.search() parcurge textul și returnează un obiect Match pentru prima porțiune care se potrivește modelului, sau None dacă nu găsește nimic. Din obiectul Match iei textul găsit (.group()), grupurile și poziția.

Scrie modelele ca șiruri raw (r"\d+"), ca backslash-urile să ajungă neschimbate la modulul re. Elemente de bază: \d cifră, \w literă/cifră/_, \s spațiu, . orice caracter, + unul sau mai multe, * zero sau mai multe, ? opțional, [abc] unul dintre caractere, ( ) grup, ^/$ început/sfârșit.

Flag-uri uzuale: re.IGNORECASE (re.I), re.MULTILINE (re.M), re.DOTALL (re.S), re.VERBOSE (re.X). Metoda Pattern.search() a unui model compilat face același lucru și acceptă pozițiile pos și endpos.

Parametri

Parametru Descriere
model Expresia regulată (text sau model compilat).
text Textul în care se caută.
flags Opțional. Flag-uri combinate cu |.

Ce returnează

Un obiect re.Match sau None.

Exemple

Exemplul 1: Găsirea unui număr de telefon

import re
text = "Sună-mă la 0722 123 456 după ora 18."
m = re.search(r"07\d{2} \d{3} \d{3}", text)
if m:
    print("Găsit:", m.group(), "la poziția", m.start())
print(re.search(r"\d{4}-\d{2}", text))

Rezultat

Găsit: 0722 123 456 la poziția 11
None

Exemplul 2: Grupuri și IGNORECASE

import re
m = re.search(r"(\w+)@(\w+)\.ro", "Contact: ANA@EXEMPLU.ro", re.IGNORECASE)
print(m.group(0), "|", m.group(1), "|", m.group(2))
print(re.search(r"^iași", "Iași", re.I) is not None)

Rezultat

ANA@EXEMPLU.ro | ANA | EXEMPLU
True

Greșeli frecvente

  • Apelezi .group() fără să verifici rezultatul. Dacă nu există potrivire, primești AttributeError: 'NoneType' object has no attribute 'group'.
  • Scrii modelul fără r în față: "\bcuvânt\b". \b devine caracterul backspace și modelul nu mai găsește nimic.

Comenzi înrudite