В общем и целом уже неплохо, но мне кажется интерфейс можно упростить.

 1. Зачем вообще хранить текст, почему бы не сделать текст агрументом метода `isFind`? Могу представить только однй ситуацию, когда к одному тексту применяется несколько выражений, но это осмысленно только в случае, если вы преобразуете текст во что-то сложное, но удобное для матчинга. У вас этого нет, и я не знаю, есть ли вообще такие варианты. Получается, вы напрасно вводите текст в состояние объекта, и нагружаете интерфейс методами `set/getText`. В случае же с регуляркой я склонен оставить, поскольку сценарий матчинга одного выражения в куче строк вполне типичен, да и действительно допускает оптимизацию.
 1. Название `isFind` кривовато... Либо уж `isFound`, `canBeFound`, ну или совсем коротко `match`. Просто и со вкусом. Ну и кстати вероятно нужно возвращать не 0/1, а позицию первого вхождения выражения в тексте (-1 если вхождений нет).
 1. Имя агрумента `reg` плохое, лучше уж `regex` или `expr`. Спутать можно с чем угодно...