Skip to content

Regex Flags

DodaTech 2 min read

In this tutorial, you'll learn about Cum să folosești flag. We cover key concepts, practical examples, and best practices.

Vei învăța cum să folosești flag-urile expresiilor regulate în Python și JavaScript pentru a controla comportamentul potrivirii: case-insensitive, global, multiline, dotall și verbose.

Problema

Comportamentul default al regex nu e mereu suficient. Uneori vrei potrivire fără a ține cont de litere mari/mici, să găsești toate aparițiile, sau să scrii regex-uri mai complexe pe mai multe linii.

Flag-urile Principale

Flag Python JavaScript Efect
Ignoră case re.I i Potrivire fără a ține cont de uppercase/lowercase
Global g Găsește toate aparițiile (nu doar prima)
Multiline re.M m ^ și $ se potrivesc pe fiecare linie
Dotall re.S s . se potrivește și cu newline
Verbose re.X x Permite spații și comentarii în regex

Modul Greșit

import re
text = "Python PYTHON python"
result = re.findall(r"python", text)
# Găsește doar "python" cu litere mici
print(result)  # ["python"]

Modul Corect

import re

text = "Python PYTHON python"

# Flag-ul I (IGNORECASE)
result = re.findall(r"python", text, re.I)
print(result)  # ["Python", "PYTHON", "python"]

# Flag-ul M (MULTILINE) — ^ și $ pe fiecare linie
text2 = "primul\nsecundul\nterțul"
result2 = re.findall(r"^\w+", text2, re.M)
print(result2)  # ["primul", "secundul", "terțul"]

# Flag-ul S (DOTALL) — . se potrivește și cu \n
text3 = "Hello\nWorld"
result3 = re.findall(r"Hello.World", text3, re.S)
print(result3)  # ["Hello\nWorld"]

Output:

['Python', 'PYTHON', 'python']
['primul', 'secundul', 'terțul']
['Hello\nWorld']

În JavaScript

const text = "Python PYTHON python";

// Flag i — ignore case
console.log(text.match(/python/gi));
// ["Python", "PYTHON", "python"]

// Flag m — multiline
const text2 = "primul\nsecundul\nterțul";
console.log(text2.match(/^\w+/gm));
// ["primul", "secundul", "terțul"]

// Flag s — dotall
const text3 = "Hello\nWorld";
console.log(text3.match(/Hello.World/s));
// ["Hello\nWorld"]

Output:

["Python", "PYTHON", "python"]
["primul", "secundul", "terțul"]
["Hello\nWorld"]

Flag-ul X (Verbose) — Regex pe Mai Multe Linii

import re

pattern = re.compile(r"""
    \d{4}          # anul
    [-/]           # separator
    \d{2}          # luna
    [-/]           # separator
    \d{2}          # ziua
""", re.X)

text = "Data: 2025-01-15 si 2025/01/16"
print(pattern.findall(text))  # ["2025-01-15", "2025/01/16"]

Output:

['2025-01-15', '2025/01/16']

Sfaturi de Prevenire

  • Combină flag-urile cu | în Python: re.I | re.M
  • În JavaScript, flag-urile se pun după al doilea /: /pattern/gim
  • Folosește re.compile cu flag-uri pentru regex-uri folosite des
  • re.X ajută la documentarea regex-urilor complexe

Greșeli Comuni

  1. Fără g în JavaScript — primești doar prima potrivire
  2. ^ și $ fără m — se potrivesc doar la începutul/sfârșitul întregului text
  3. Litere mari greșite — Python: re.I, nu re.i

FAQ

### De ce Python nu are flag `g`?

În Python, re.search și re.match returnează doar prima potrivire. Pentru toate aparițiile, folosește re.findall sau re.finditer.

Care e diferența dintre re.S și re.M?

re.S (DOTALL) face ca . să se potrivească și cu \n. re.M (MULTILINE) face ca ^ și $ să se potrivească la începutul/sfârșitul fiecărei linii, nu al întregului text.

Pot combina flag-urile în JavaScript?

Da: /pattern/gims — toate flag-urile se pun la sfârșit.

Construit de dezvoltătorii Doda Browser, DodaZIP și Durga Antivirus Pro. Uneltele DodaTech se integrează perfect cu Python și JavaScript pentru productivitate și securitate sporită.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro