Чтобы соответствовать словам, попробуйте это регулярное выражение:
regex rgx("\\<[a-z]+\\>",boost::regex::perl|boost::regex::icase);
Согласно документам, \<
обозначает начало слова, а \>
обозначает конец слова в разновидности Perl соответствия Boost с регулярным выражением.
Боюсь, кто-то еще должен объяснить, как повторять совпадения. Ускоренная документация заставляет мой мозг болеть.