hola, bueno, pues no soy el adecuado en expresiones regulares, pero pues no se si las expresiones permitan tanto lo que vos queres
tal vez te serviría más un "buscador dinámico" en donde por ej si buscas "perro" tengas una tabla que se llame "busquedas" por ej , y tenga 2 o 3 campos
3 campos = 1 campo de "patron" donde estaria "perro", otro campo llamado "relacionados" donde estaria "gato" y otro de "excluidos" donde estaria "ratón"
2 campos = el campo "patron" que seria la unión de "patron y relacionados" pero esto acarrearia tener que cortar lo que tenga este campo y revisar si lo que se escribio para buscar coincide con alguno de estos, en cuyo caso es mejor tener los 3 campos
y bueno, teniendo los 3 campos, ya sería cuestión de ordenar los datos y crear la consulta dinámicamente, así por ej
Código sql:
Ver originalSELECT * FROM tabla WHERE campo = 'patron' OR campo = 'relacionados' AND campo <> 'excluidos'
solo una idea que se me ocurrio, bueno, nos comentas
saludos