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
\bse bazează pe definiția lui\w([a-zA-Z0-9_]), în JavaScript (unde\wnu 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ântulmă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
\blângă un simbol care nu este în\w(cum ar fi\b+40\bsau\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
\w și \W (caractere de cuvânt): Potrivește litere, cifre și caracterul underscore [a-zA-Z0-9_] (\w) sau opusul acestora (\W).^ și $ (început și sfârșit de șir / linie): Ancorează potrivirea la începutul (^) și/sau la sfârșitul ($) șirului de text sau al fiecărui rând.\p{L} și diacriticele românești (ăîâșț): Potrivește corect toate literele Unicode și diacriticele românești (ă, î, â, ș, ț) folosind proprietăți Unicode sau clase explicite.(?<=...) și (?<!...) (Positive / Negative Lookbehind): Verifică dacă poziția curentă este precedată (?<=…) sau NU este precedată (?<!…) de un șablon, fără a-l include în match.