\w
is not a word boundary, it matches any word character, including underscores: [a-zA-Z0-9_]
. \b
is a word boundary, that is, it matches the position between a word and a non-alphanumeric character: \W
or [^\w]
.
These implementations may vary from language to language though.