Originariamente inviato da andbin
Quando find() di Matcher trova l'occorrenza, puoi prendere tutta la parte matchata con group().

Se la regex è quella che ho indicato con i \b non ci sono problemi, perché \b matcha un boundary, non un qualche carattere. Quindi ciò che ottieni è proprio la stringa che ti serve.
...stavo lavorando proprio con group(), ma se str1 contiene più occorrenze di str2, group() me ne ritorna solo una, probabilmente l'ultima trovata.

Dovrei utilizzare un ciclo dove verifico la presenza di str2 in str1, nel quale fare un replaceFirst() di str2 (così come è stato trovato in str1, rispettando cioè maiuscole e minuscole) con una stringa che contiene <a href>str2_così_come_in_str1</a> e ripetere il ciclo fin quando str2 non è più presente in str1.
Ma per il momento ho ottenuto solo un ciclo infinito