Hola JuJoGuAl:
La construcción de expresiones regulares es un tema bastante amplio y se necesita de mucha práctica para poder llegar a dominarlas... sin embargo, algo que me ha servido para construir patrones de búsqueda es simplemente hacerlo por partes y utilizar condicionales... sé que no es la manera más óptima para hacerlo, pero funciona
Para el ejemplo, supongamos que tienes lo siguiente:
Código MySQL:
Ver original+------+---------------------+
| id | nombre |
+------+---------------------+
| 1 | JUAN PEREZ INICIO |
| 2 | EN MEDIO JUAN PEREZ |
| 3 | AL FINAL JUAN |
| 4 | JUAN |
| 5 | JUANITO |
| 6 | ALGO SANJUAN |
| 7 | SANJUANITO |
+------+---------------------+
De acuerdo a lo que entendí con tu explicación, lo que quieres es buscar aquellos registros que contengan la palabra JUAN (independientemente de si está al inicio, en medio o al final), pero no aquellas donde la palabra JUAN forme parte de OTRA palabra (como JUANITO, SANJUAN, o SANJUANITO):
Lo que se me ocurrió es hacerlo por partes:
Código MySQL:
Ver originalmysql> #Sólo contiene la palabra JUAN
+------+--------+
| id | nombre |
+------+--------+
| 4 | JUAN |
+------+--------+
mysql> #Sólo la palabra JUAN al inicio, pero pueden tener más palabras
+------+-------------------+
| id | nombre |
+------+-------------------+
| 1 | JUAN PEREZ INICIO |
+------+-------------------+
mysql> #Contiene la palabra JUAN al FINAL (tiene un espacio antes)
+------+---------------+
| id | nombre |
+------+---------------+
| 3 | AL FINAL JUAN |
+------+---------------+
mysql> #Contiene la palabra JUAN en medio, (hay espacio al inicio y al fin)
+------+---------------------+
| id | nombre |
+------+---------------------+
| 2 | EN MEDIO JUAN PEREZ |
+------+---------------------+
De tal manera, que tu Expresión regular la podrías construir utilizando el operador OR (|):
Código MySQL:
Ver original -> WHERE nombre
REGEXP '^JUAN$|^JUAN[ ]|[ ]JUAN$|[ ]JUAN[ ]'; +------+---------------------+
| id | nombre |
+------+---------------------+
| 1 | JUAN PEREZ INICIO |
| 2 | EN MEDIO JUAN PEREZ |
| 3 | AL FINAL JUAN |
| 4 | JUAN |
+------+---------------------+
Esta definitivamente no es la mejor manera de hacer una expresión regular, pero creo que te puede servir.
Dale un vistazo y nos comentas
Saludos
Leo.