Cómo garantizar que replaceAll reemplazará una palabra completa y no una subcadena

Tengo una entrada de diccionario. El diccionario se repite para reemplazar elkey del diccionario en el texto. PeroreplaceAll la función reemplaza elsubString también.

Cómo asegurarse de que coincida con la palabra completa (como un todo y no como unsubString)

String text= "Synthesis of 1-(2,6-dimethylbenzyl)-1H-indole-6-carboxylic acid [69-3] The titled compound (883 mg) sdvfshd[69-3]3456 as a white solid was prepared"

dictionary= {[69-3]=1-(2,6-dimethylbenzyl)-1H-indole-6-carboxylic acid }

for(Map.Entry<String, String> entry : dictionary.entrySet()){

        text=text.replaceAll("\\b"+Pattern.quote(entry.getKey())+"\\b", entry.getValue());

} 

Respuestas a la pregunta(2)

Su respuesta a la pregunta