Usando macro expandida como patrón de búsqueda para \patchcmd

Usando macro expandida como patrón de búsqueda para \patchcmd

¿Hay alguna forma de utilizar el valor de una macro expandida como patrón de búsqueda para etoolbox's \patchcmd(o xpatch's \xpatchcmd, etc.), de modo que uno pueda tener algún tipo de parche "dinámico", mediante el cambio de catcodes?

Aquí hay un ejemplo de trabajo mínimo (MWE).

\documentclass{article}

\usepackage{etoolbox}
\usepackage{xcolor}

\begin{document}

\newcommand{\wordlist}{cat dog parrot goldfish hamster}

\newcommand\selectpet[1]{%
  \bgroup
  \patchcmd{\wordlist}{#1}{\textcolor{red}{#1}}{}{}
  \wordlist
  \egroup
}

\selectpet{dog}  %% This works

\def\mychoice{dog}
\selectpet{\mychoice}  %% This doesn't

\end{document}

Respuesta1

Quieres ampliar mychoiceantes de llamar \selectpetasí:

\expandafter\selectpet\expandafter{\mychoice}

información relacionada