In most modern regex flavors (PCRE, JavaScript, Python’s re, etc.), the special token \b (word boundary) matches the position between a “word” character (\w) and a “non-word” character (\W), or the start/end of the string. By definition:
Word characters (\w) are:
Upper- and lower-case letters (A–Z, a–z)
Digits (0–9)
The underscore (_)
Non-word characters (\W) are everything else (spaces, punctuation, symbols, etc.), including the hyphen (-).