\w și \W (caractere de cuvânt) în Expresii Regulare (RegEx)

Clase de caractere PCRE / ECMAScript / Python

Potrivește litere, cifre și caracterul underscore [a-zA-Z0-9_] (\w) sau opusul acestora (\W).

Tipar RegEx
w   |   w+   |   W

Ce face \w și \W (caractere de cuvânt)

Clasa \w (de la word character) potrivește orice literă (mică sau mare), orice cifră și caracterul underscore (_). În mod implicit (ASCII), \w este exact echivalent cu setul [a-zA-Z0-9_], fiind ideal pentru identificatori de programare, username-uri, slug-uri sau tokenizarea cuvintelor.

Opusul său este \W (echivalent cu [^a-zA-Z0-9_]), care potrivește spațiile, semnele de punctuație, cratimele și simbolurile speciale. Atenție pentru limba română: fără modul Unicode (/u în PCRE), \w nu include diacriticele (ă, î, â, ș, ț)!

Variante și sintaxă asociată

Expresie / Simbol Descriere
\w Un caracter de cuvânt ASCII: [a-zA-Z0-9_]. Include underscore și cifre!
\W Orice caracter care NU este în [a-zA-Z0-9_] (spații, cratimă, punctuație).
\w+ Un cuvânt sau identificator continuu format din litere, cifre și underscore.
[\w-]+ Caractere de cuvânt plus cratimă (foarte util pentru slug-uri URL sau nume de clase CSS).
/\w+/u În PHP (PCRE cu flag-ul u) și Python 3, \w include și literele Unicode cu diacritice.

Exemple

Exemplul 1: Extragerea identificatorilor și a hashtag-urilor

Căutăm simbolul # urmat de unul sau mai multe caractere de cuvânt.

Expresie: /#\w+/g
Text:     "Articol nou despre #regex_2026, #php8 și #web-dev!"

Potriviri găsite (Matches)

Match 1: "#regex_2026"
Match 2: "#php8"
Match 3: "#web"   (se oprește la cratimă, deoarece '-' nu face parte din \w)

Exemplul 2: Comportamentul lui \w pe cuvinte românești cu diacritice

În JavaScript (chiar și cu /u), \w rămâne strict ASCII și rupe cuvintele la diacritice.

Expresie standard JS: /\w+/g
Expresie Unicode JS:  /[\p{L}\p{N}_]+/gu
Text:                 "învățăm programare"

Potriviri găsite (Matches)

Cu /\w+/g            -> ["nv", "m", "programare"]  (diacriticele sunt ignorate!)
Cu /[\p{L}\p{N}_]+/gu -> ["învățăm", "programare"]  (corect în română)

Greșeli frecvente

  • Folosirea lui \w+ în JavaScript pentru a extrage cuvinte în limba română: literele ă, î, â, ș, ț sunt tratate ca non-word (\W) și vor sparge cuvintele în bucăți. Folosește \p{L}+ cu flag-ul u.
  • Uitarea faptului că \w acceptă atât cifre, cât și underscore (_). Dacă vrei strict litere fără cifre și fără _, folosește [a-zA-Z] sau \p{L}.

Simboluri și rețete înrudite