in reply to Why do zero width assertions care about lookahead/behind?

That's \b is defined as both lookahead and lookbehind, but the explicit operators give you each option separately. To create \b, you need something like:
/(?: (?<!\w)(?=\w) | (?<=\w)(?!\w) )/x
In other words, either lookbehind and don't find a \w, then lookahead and do, or look behind and find a \w, and lookahead and don't find one.

So the fact that it can be placed before or after a "word" is because it has an implicit or in the definition.

-- Randal L. Schwartz, Perl hacker
Be sure to read my standard disclaimer if this is a reply.