In general, no, regex is not a good way to find fixed substrings within a string.
There are several algorithms for substring searching that is faster than naive byte-by-byte searching. The most popular of which is Boyer-Moore. This website lists most of the well known ones including Boyer-Moore and its variations: http://www-igm.univ-mlv.fr/~lecroq/string/index.html.
However, most regex engines actually use Boyer-Moore internally to boost performance (competition among regex engines is actually a thing). So in some cases regexp IS a good way to do it.
But. Since you mention you're using Boost then you should be able to use the boyer_moore_search()
that's part of Boost directly without resorting to regex.
Do note however that Boyer-Moore is inefficient if your search string is small. There are other algorithms that beat it for small search strings. So you may want to do some research and compare the algorithms against your own typical search strings. But in general Boyer-Moore is a good bet.