Se a palavra que você está procurando contiver apenas os caracteres abcdef e o mesmo comprimento que um hash, será impossível separá-los com regex.
Se você acha que é improvável que você possa pesquisar
user:([0-9a-f]{32}|[0-9a-f]{40})$
Isso corresponderá a números hexadecimais de 32 ou 40 dígitos. Infelizmente, ele também corresponderá a palavras de 32 ou 40 caracteres que usam apenas as letras abcdef. Por isso, vai corresponder a deafdeafdeafdeafdeafdeafdeafdeaf
.