Problema con el fragmento siguiente en la expresión regular de coincidencia de límites (\ b)

Mi entrada:

 1. end 
 2. end of the day or end of the week 
 3. endline
 4. something 
 5. "something" end

Basado en las discusiones anteriores, si trato de reemplazar una sola cadena usando este fragmento, elimina las palabras apropiadas de la línea con éxito

public class DeleteTest {

    public static void main(String[] args) {

        // TODO Auto-generated method stub
        try {
        File file = new File("C:/Java samples/myfile.txt");
        File temp = File.createTempFile("myfile1", ".txt", file.getParentFile());
        String delete="end";
        BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
        PrintWriter writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(temp)));

        for (String line; (line = reader.readLine()) != null;) {
            line = line.replaceAll("\\b"+delete+"\\b", "");
       writer.println(line);
        }
        reader.close();
        writer.close();
        }
        catch (Exception e) {
            System.out.println("Something went Wrong");
        }
    }
}

Mi salida Si uso el fragmento anterior: (También mi salida esperada)

 1.  
 2. of the day or of the week
 3. endline
 4. something
 5. "something"

Pero cuando incluyo más palabras para eliminar, y para ese propósito cuando uso Set, uso el fragmento de código a continuación:

public static void main(String[] args) {

    // TODO Auto-generated method stub
    try {

    File file = new File("C:/Java samples/myfile.txt");
    File temp = File.createTempFile("myfile1", ".txt", file.getParentFile());
    BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
    PrintWriter writer = new PrintWriter(new OutputStreamWriter(new FileOutputStream(temp)));

        Set<String> toDelete = new HashSet<>();
        toDelete.add("end");
        toDelete.add("something");

    for (String line; (line = reader.readLine()) != null;) {
        line = line.replaceAll("\\b"+toDelete+"\\b", "");
    writer.println(line);
    }
    reader.close();
    writer.close();
    }
    catch (Exception e) {
        System.out.println("Something went Wrong");
    }
}

Obtengo mi salida como: (Simplemente elimina el espacio)

 1. end
 2. endofthedayorendoftheweek
 3. endline
 4. something
 5. "something" end 

¿Pueden ustedes ayudarme en esto?

Haga clic aquí para seguir el hilo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta