Вы продолжаете изменять свой вопрос, но этот ответ соответствует текущей редакции.Вы можете использовать косвенное утверждение для обработки логики замены.
String input_string = "test, testing, test";
String output_string = input_string.replaceAll("test(?=,|$)", "foo");
На самом деле мой ответ очень похож на то, что у вас уже есть.Единственное отличие состоит в том, что используемое мной средство просмотра не использует запятую, которая, как вам кажется, не нужна.