Flag-uri RegEx: g, i, m, s, u, x în Expresii Regulare (RegEx)

Lookaround și flag-uri PCRE / ECMAScript / Python

Modificatori globali care schimbă modul de evaluare a expresiei: căutare multiplă (g), insensibil la majuscule (i), multi-linie (m), Unicode (u).

Tipar RegEx
/pattern/gimu   |   (?i)pattern   |   re.IGNORECASE

Ce face Flag-uri RegEx: g, i, m, s, u, x

Flag-urile (modificatorii) se plasează după delimitatorul de închidere al expresiei regulare (de exemplu / șablon /gimu) și modifică regulile generale de funcționare ale motorului RegEx.

Cele mai importante 6 flag-uri sunt: g (global — găsește toate aparițiile, nu doar prima), i (case-insensitive — ignoră diferența dintre litere mici și mari), m (multiline — ^ și $ potrivesc pe fiecare rând), s (dotAll / singleline — punctul . potrivește și \n), u (unicode — esențial pentru diacritice și emoji) și x (extended în PHP/Python — permite comentarii și spații de formatare în RegEx).

Variante și sintaxă asociată

Expresie / Simbol Descriere
g (global) Caută toate potrivirile din șir (în JS /pattern/g; în PHP se folosește funcția preg_match_all).
i (insensitive) Ignoră diferența dintre litere mici și MARI (a potrivește atât a, cât și A).
m (multiline) Ancorele ^ și $ potrivesc începutul și sfârșitul fiecărei linii (după/înainte de \n).
s (dotAll / singleline) Face ca metacaracterul punct (.) să potrivească inclusiv caracterul newline (\n).
u (unicode) Tratează șirul ca UTF-8 și activează proprietățile Unicode \p{L} (obligatoriu pt. română).
x (extended / verbose) În PHP și Python (re.VERBOSE): ignoră spațiile albe și permite comentarii cu # în expresie.

Exemple

Exemplul 1: Combinarea flag-urilor i (case-insensitive) și u (Unicode) în română

Pentru ca i să știe că Ș mare este echivalent cu ș mic, trebuie combinat cu flag-ul u.

// PHP:
$text = "Știință, știință și ȘTIINȚĂ";
preg_match_all('/știință/iu', $text, $m);

Potriviri găsite (Matches)

$m[0] => ["Știință", "știință", "ȘTIINȚĂ"] (toate cele 3 variante sunt găsite)

Exemplul 2: Scrierea unei expresii complexe comentate cu flag-ul x în PHP

Cu flag-ul x, putem scrie expresia pe mai multe rânduri și adăuga comentarii explicative cu #.

// PHP:
$pattern = '/
    ^                   # Începutul șirului
    (?<an>\d{4})        # Anul (4 cifre)
    -                   # Separator cratimă
    (?<luna>0[1-9]|1[0-2]) # Luna (01-12)
    $                   # Sfârșitul șirului
/x';
preg_match($pattern, '2026-10', $m);

Potriviri găsite (Matches)

$m['an']   => "2026"
$m['luna'] => "10"

Greșeli frecvente

  • Încercarea de a pune flag-ul /g în PHP (preg_match('/abc/g', ...)): în PHP nu există flag-ul g și va genera eroarea Unknown modifier ‘g’! În PHP, căutarea globală se face apelând funcția preg_match_all().
  • Folosirea flag-ului x atunci când expresia conține spații literale sau simbolul # (de exemplu pentru culori hex #FF0000): cu /x activ, spațiile sunt ignorate, iar # începe un comentariu! Cu /x, scrie spațiile ca \s sau \ și # ca \#.

Simboluri și rețete înrudite