優先するオプションのサブパターンを指定する必要がありますが、バックアップを許可します。残念ながら、どちらもパターンの一部を共有しており、優先される一致はその後になります。元:
$string = "Fuzzy bunny is bald";
preg_match_all('@(?:bunny is (\w+)|(\w+) bunny)@',$string,$result);
意図した動作は、"bald" のみに一致することです。そうでない場合は、"Fuzzy" に一致する必要がありますが、最初に "Fuzzy" と一致するため、逆になります。
ご協力いただきありがとうございます。