The problem simply comes from the meaning of \b
(see source). This part \.\b$
will never match anything, as there is no word boundary position to match (the position between a dot and the end of the string is not a word boundary position).
You should try:
^\ba\.?b\.?c\.?(?:\b|$)
instead.
With the "something" part, it'd give:
^\ba\.?b\.?c\.?(?:\b|$)( something)?$
(there's maybe some improvement to do here, but it should work)