Expresiile regulate sunt adesea criticate că ar fi „write-only code” — un șir dens și indescifrabil de caractere speciale pe care nici măcar autorul nu îl mai înțelege după 3 luni. Modul Extins (Verbose / Extended Mode), activat prin flag-ul x sau modificatorul inline (?x), rezolvă definitiv această problemă, permițând formatarea expresiilor ca pe un cod sursă obișnuit.
RegEx Opace vs. RegEx Verbose Documentat
# EXPRESIE REGULARĂ OBIȘNUITĂ (OPACĂ ȘI GREU DE ÎNȚELES):
^(?:\+?4)?07\d{8}$
# ACEEAȘI EXPRESIE REGULARĂ ÎN MODUL EXTINS (re.VERBOSE / (?x)):
(?x)
^ # Începutul numărului de telefon
(?:
\+? 4 # Prefixul internațional opțional al României (+4 sau 4)
)?
07 # Toate numerele mobile din România încep cu 07
\d{8} # Urmează exact 8 cifre suplimentare
$ # Sfârșitul numărului
Cum Tratează Motorul Spațiile în Modul Verbose?
- Spațiile albe sunt ignorate: Spațiile simple, tab-urile și liniile noi folosite pentru indentare nu sunt considerate parte din șablonul căutat.
- Comentarii cu diez (#): Orice text apărut după caracterul
#până la sfârșitul liniei respective este ignorat complet de motor. - Cum potrivim un spațiu real în mod verbose? Dacă doriți să căutați un spațiu literal, folosiți
\s,[ ]sau\(escapat cu backslash).
Exemplu în Python cu re.VERBOSE
import re
pattern_email = re.compile(r'''
^
(?P [a-zA-Z0-9._%+-]+ ) # Numele contului de utilizator
@ # Simbolul obligatoriu arond
(?P [a-zA-Z0-9.-]+ ) # Numele domeniului
\. # Punctul despărțitor
(?P [a-zA-Z]{2,} ) # Extensia TLD (ro, com, org)
$
''', re.VERBOSE)
match = pattern_email.match("suport@dexblog.ro")
if match:
print("Domeniu:", match.group('domeniu')) # "dexblog"