Como não substituir quando precedido por alguns caracteres usando replaceAll @ da Stri

Preciso substituir algumas palavras em um texto, mas preciso colocar condições na estratégia de substituição da seguinte maneira:

Quero substituir word1 com word2:

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

mas eu não quero substituir word1 se for precedido por word3 qual é

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

Isso é se o texto for word3.word1 Eu não quero tocar. Mas não consigo lidar com isso comword boundaries usandoCord 'sreplaceAll método.

EDITAR

E também não quero alterar se o word1 tiver um prefixo ou sufixo do caractere "-" ou seja, -word1 ou word1- ou -word1-

Qualquer ajuda seria apreciáve

questionAnswers(8)

yourAnswerToTheQuestion