man expr diz que a expressão "STRING: PATTERN" está "ancorada" e, em seguida, na página de informações (info coreutils 'expr invocation') você pode ler:
'STRING : REGEX'
Perform pattern matching. The arguments are converted to strings
and the second is considered to be a (basic, a la GNU 'grep')
regular expression, with a '^' implicitly prepended. The first
argument is then matched against this regular expression.
O que significa que o efeito que você vê é o comportamento esperado