Cómo no reemplazar cuando está precedido por algunos caracteres usando el reemplazo de cadena de todos

Necesito reemplazar algunas palabras en un texto, pero necesito poner condiciones en la estrategia de reemplazo de la siguiente manera:

Quiero reemplazar word1 con word2:

String word1 = "word1";
String word2 = "word2";

pero no quiero reemplazar word1 si está precedido por word3 cual es

String word3 = "word3."; //with the dot at the ending

Eso es si el texto es word3.word1 No quiero tocarlo. Pero parece que no puedo manejar eso conword limits utilizandoCuerd 'sreplaceAll método.

EDITAR

Y tampoco quiero cambiar si word1 tiene un prefijo o sufijo de carácter "-", es decir, -word1 o word1- o -word1-

Cualquier ayuda sería apreciable.

Respuestas a la pregunta(8)

Su respuesta a la pregunta