Ce face re.compile()
re.compile() transformă textul expresiei într-un obiect re.Pattern, cu aceleași metode ca modulul: search, match, fullmatch, findall, finditer, sub, subn, split. Atributele pattern, flags și groups descriu modelul.
Modulul re păstrează oricum într-un cache modelele folosite recent, deci câștigul de viteză este mic, dar codul devine mai clar când același model este folosit în mai multe locuri. re.purge() golește acest cache.
Flag-urile sunt membri ai enumerării re.RegexFlag și se combină cu |. Cu re.VERBOSE poți scrie modelul pe mai multe rânduri, cu spații și comentarii. Metoda Pattern.scanner() există, dar nu este documentată oficial; nu te baza pe ea.
Parametri
| Parametru | Descriere |
|---|---|
expresie |
Textul expresiei regulate. |
flags |
Opțional. Flag-uri (re.I | re.M…). |
Ce returnează
Un obiect re.Pattern.
Exemple
Exemplul 1: Model refolosit
import re
NR_AUTO = re.compile(r"\b[A-Z]{1,2} \d{2,3} [A-Z]{3}\b")
for text in ["Mașina IS 12 ABC a plecat", "B 123 XYZ și CJ 07 DEF", "fără număr"]:
print(NR_AUTO.findall(text))
print(NR_AUTO.pattern, NR_AUTO.groups)
Rezultat
['IS 12 ABC']
['B 123 XYZ', 'CJ 07 DEF']
[]
\b[A-Z]{1,2} \d{2,3} [A-Z]{3}\b 0
Exemplul 2: VERBOSE și flag-uri
import re
DATA = re.compile(r'''
(?P<zi>\d{1,2}) # ziua
[./-]
(?P<luna>\d{1,2}) # luna
[./-]
(?P<an>\d{4}) # anul
''', re.VERBOSE)
m = DATA.search("Născut pe 5.03.1998 la Iași")
print(m.groupdict())
print(re.I | re.M, type(re.I).__name__)
re.purge()
Rezultat
{'zi': '5', 'luna': '03', 'an': '1998'}
re.IGNORECASE|re.MULTILINE RegexFlag
Greșeli frecvente
- Compilezi modelul în interiorul unei bucle, la fiecare pas. Compilează-l o singură dată, în afara buclei, de obicei ca o constantă la începutul modulului.
Comenzi înrudite
re.search(): Caută prima potrivire a unei expresii regulate oriunde într-un text.re.sub() și re.subn(): Înlocuiește toate potrivirile unui model cu un text sau cu rezultatul unei funcții.re.escape(): Pune backslash înaintea caracterelor speciale, ca un text să fie căutat literal într-o expresie regulată.re.Match: group(), groups(), groupdict(), expand(): Metodele obiectului Match prin care citești textul găsit și grupurile capturate.