În majoritatea limbajelor de programare, flag-urile (cum ar fi i pentru case-insensitive sau s pentru dotAll) sunt transmise ca un parametru global care se aplică asupra întregii expresii regulate (de exemplu: /model/i). Cu toate acestea, de multe ori doriți ca doar o mică porțiune din șablon să ignore majusculele, în timp ce restul șablonului să rămână strict case-sensitive. Modificatorii Inline de Mod permit acest control fin.
(?i) # Activează modul case-insensitive de la acest punct înainte
(?-i) # Dezactivează modul case-insensitive de la acest punct înainte
// Exemplu practic: Prefixul este flexibil, dar codul de securitate este strict:
(?i)token_(?-i)[A-Z0-9]{8}
// Șiruri potrivite:
// "token_AB12CD34" -> VALID
// "TOKEN_AB12CD34" -> VALID
// "token_ab12cd34" -> RESPINS! (codul de după (?-i) cere strict majuscule!)
Modificatori Scopați (Scoped Modifiers)
O sintaxă și mai curată suportată în motoare moderne precum PCRE2, Python 3.11+ și Java este aplicarea modificatorului doar în interiorul unei paranteze:
(?i:text_case_insensitive)text_normal
# "text_case_insensitive" se potrivește indiferent de majuscule/minuscule,
# iar la ieșirea din paranteză motorul revine automat la comportamentul standard!
Lista Celor Mai Folosiți Modificatori Inline
(?s): Activează modul dotAll (punctul.se potrivește și cu\n). Ideal de pus la începutul șabloanelor complexe în limbaje unde nu aveți acces ușor la flag-ul global.(?m): Activează modul multiline (^și$ancorează per linie).(?x): Activează modul extended / verbose (permite spații și comentarii cu#).