\b și \B (limită de cuvânt) în Expresii Regulare (RegEx)

Ancore și limite PCRE / ECMAScript / Python

Potrivește poziția de graniță dintre un cuvânt și un non-cuvânt (\b) sau o poziție din interiorul cuvântului (\B).

Tipar RegEx
bcuvantb   |   bprefix   |   sufixb   |   B

Ce face \b și \B (limită de cuvânt)

Ancora \b (word boundary) este o aserțiune de lungime zero (nu consumă niciun caracter) care potrivește granița dintre un caracter de cuvânt (\w) și un caracter non-cuvânt (\W) (sau începutul/sfârșitul șirului). Este echivalentul opțiunii „Whole Word” din editoarele de text.

Dacă înconjori un termen cu \b...\b (de exemplu \bcat\b), te asiguri că vei găsi cuvântul independent cat, dar nu și aparițiile sale în interiorul altor cuvinte precum category, educate sau scatter. Opusul său, \B, cere ca poziția curentă să nu fie o limită de cuvânt (adică să fie în interiorul cuvântului sau între două spații).

Variante și sintaxă asociată

Expresie / Simbol Descriere
\bcuvant\b Potrivește cuvântul întreg (nu ca subșir în interiorul unui cuvânt mai lung).
\bprefix Potrivește doar cuvintele care ÎNCEP cu „prefix”.
sufix\b Potrivește doar cuvintele care SE TERMINĂ cu „sufix”.
\B Non-word boundary: potrivește doar în interiorul cuvintelor (între două caractere \w) sau între două \W.

Exemple

Exemplul 1: Căutarea cuvântului întreg „ion” fără a potrivi „camion” sau „ionel”

Fără \b, căutarea după ion găsește subșirul în orice cuvânt care îl conține.

Expresie: /\bion\b/gi
Text:     "Ion a urcat în camion împreună cu Ionel și un milionar."

Potriviri găsite (Matches)

Match 1: "Ion"
("camion", "Ionel" și "milionar" sunt ignorate)

Exemplul 2: Folosirea lui \B pentru a găsi un subșir strict în interiorul unui cuvânt

Expresia \Bcat\B găsește cat doar când are litere lipite atât în stânga, cât și în dreapta.

Expresie: /\Bcat\B/g
Text:     "cat, category, tomcat, education, scatter"

Potriviri găsite (Matches)

Match 1: "cat" (din "education")
Match 2: "cat" (din "scatter")

Greșeli frecvente

  • Deoarece \b se bazează pe definiția lui \w ([a-zA-Z0-9_]), în JavaScript (unde \w nu include diacritice), o literă ca ă sau ș este considerată non-cuvânt! Astfel, /\bșa\b/ nu va funcționa corect în JS, iar /\bmar\b/ va potrivi greșit primele 3 litere din cuvântul mărime (tratând ă ca graniță de cuvânt)! Pentru română cu diacritice, folosește lookaround Unicode: (?<!\p{L})cuvânt(?!\p{L}).
  • Punerea lui \b lângă un simbol care nu este în \w (cum ar fi \b+40\b sau \b$100\b): deoarece + și $ sunt deja caractere \W, între un spațiu și + nu există o graniță \b, deci expresia nu va potrivi!

Simboluri și rețete înrudite