Como encontrar uma palavra inteira em uma String em java

Eu tenho uma String que eu tenho que analisar para diferentes palavras-chave. Por exemplo, eu tenho a String:

"Eu irei encontrá-lo nas 123woods"

E minhas palavras-chave são

'123woods' 'madeiras'

Devo relatar sempre que tenho uma correspondência e onde. Múltiplas ocorrências também devem ser contabilizadas. No entanto, para este, eu deveria conseguir uma partida apenas nas madeiras, não nas madeiras. Isso elimina o uso do método String.contains (). Além disso, eu devo ter uma lista / conjunto de palavras-chave e verificar ao mesmo tempo a ocorrência delas. Neste exemplo, se eu tiver '123woods' e 'come', devo receber duas ocorrências. A execução do método deve ser um pouco rápida em textos grandes.

Minha idéia é usar o StringTokenizer, mas não tenho certeza se ele terá um bom desempenho. Alguma sugestão?