For reference, code was already very smart about this, but just buggy.
It reads everything up to the line end, and then does an OR query based on all possibilities against all possible non-word cut points (i.e. any possible parse for a username). It picks the longest username matched.
It reads everything up to the line end, and then does an OR query based on all possibilities against all possible non-word cut points (i.e. any possible parse for a username). It picks the longest username matched.