Una dintre cele mai frecvente erori în căutarea cu regex este căutarea naivă a unui cuvânt scurt: dacă dorești să găsești cuvântul ‘cat’ și cauți simplu `cat`, expresia va potrivi accidental interiorul cuvintelor ‘comuni**cat**’, ‘**cat**egorie’, ‘apli**cat**ie’ sau ‘dupli**cat**’.
Aserțiunea \b (Word Boundary) verifică poziția de trecere între un caracter alfanumeric (`\w`) și un caracter non-alfanumeric (spațiu, punctuație, început sau sfârșit de rând). Prin împachetarea cuvântului ca \bcat\b, motorul garantează potrivirea exclusivă a termenului independent.
Opusul său, \B (Non-Word Boundary), validează faptul că poziția curentă se află în interiorul unui cuvânt, permițând căutarea de sufixe sau prefixe specifice.
Sintaxă, opțiuni și concepte cheie
| Opțiune / Concept | Descriere practică |
|---|---|
\bcuvant\b |
Potrivește cuvântul exact doar ca termen independent separat prin spații sau punctuație. |
\bprefix |
Potrivește începutul oricărui cuvânt care debutează cu secvența indicată. |
sufix\b |
Potrivește finalul oricărui cuvânt care se termină cu secvența indicată. |
\B |
Non-Word Boundary: poziție unde ambele caractere vecine sunt litere/cifre. |
Exemple practice și cod
Exemplul 1: Înlocuirea cuvântului ‘is’ fără a afecta cuvinte precum ‘this’ sau ‘island’
Demonstrația acurateței oferite de `\b`.
Text de test:
"This island is fantastic and it is peaceful."
1. Fără Word Boundary (Greșit):
Expresie: is
Rezultat: Găsește 4 potriviri ("Th[is]", "[is]land", "[is]", "[is]")!
2. Cu Word Boundary (Corect):
Expresie: \bis\b
Rezultat: Găsește exact cele 2 apariții ale cuvântului independent "is"!
Rezultat & Impact
Precizie de 100% la operațiunile de căutare și înlocuire în texte mari.
Greșeli frecvente și bune practici
- Uitarea faptului că în string-urile din limbajele de programare (C#, Java, Python, JavaScript), caracterul `\` trebuie scăpat cu `\\b` sau declarat ca raw string (`r”\b”` în Python sau `@”\b”` în C#).
- Folosirea `\b` pe caractere cu diacritice românești (cum ar fi `ș`, `ț`, `ă`) în motoare vechi RegEx care nu au suport Unicode (`/u`) activat, considerând diacriticele ca separatori de cuvinte.