¿Cómo se usa el límite de la palabra Java con apóstrofes?

Estoy tratando de eliminar todas las apariciones de una palabra en una lista, pero tengo problemas cuando hay apóstrofes en las palabras.

String phrase="bob has a bike and bob's bike is red";
String word="bob";
phrase=phrase.replaceAll("\\b"+word+"\\b","");
System.out.println(phrase);

salida:
has a bike and 's bike is red

Lo que quiero es
has a bike and bob's bike is red

Tengo una comprensión limitada de la expresión regular, así que supongo que hay una solución, pero ahora no tengo suficiente para crear la expresión regular para manejar los apóstrofes. También me gustaría que funcione con guiones, así que la frasethe new mail is e-mail solo reemplazaría la primera aparición de correo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta