Replace de string ignorando case e ainda mantendo o formato antigo

Olá pessoal, quero fazer um replace bem chatinho.

Tenho um texto e “busca” é somente uma palavra ou termo do meu texto. Quando estou procurando eu uso um método que suporta o case sensitive… porem quando exibir o texto em HTML gostaria de destácar aquilo que eu estou procurando mesmo que esteja em uma caixa diferente da que eu digitei. Exemplo:

Quando procuro pela palavra “aluguel”, ela pode estar no texto “Aluguel” ou “ALUGUEL” o meu replace é para manter a palavra e somente incluir TAGs HTML.

o código abaixo compara ignorando case mas quando eu dou o replace eu substituo pela palavra que eu digitei… como faço para usar a palavra original encontrada pelo replace?

resultado.replaceAll("(?i)"+busca, "<b>"+busca+"</b>");

Pegue a palavra por regex (vai vir com o case original) e a use para fazer o replace.