Erm, \w or \W have nothing to do with assertions. The fundamental difference of assertions and stuff like [[:word:]], [^[:word:]], \w, \W etc is that the former are non-consuming items, while the latter are the opposite. \w "consumes" the part of the input it matches, so it cannot be used again for matching. Assertions, on the other hand, take a peek at the input string, either forward or backward (lookahead and lookbehind), and 'assert' the presence or absense (positive or negative) of certain features in the string, without "eating" those parts of the string themselves, so that regular (consuming) items can do that.