Как реализовать эту функцию наиболее просто?
Используя существующие реализации регулярных выражений. В качестве регулярного выражения ваша маска переведётся как
a.*b. Правда, придётся поэкранировать некоторые символы.
Или используя проверку, соответствует ли
a началу строки и
b концу. При этом, если заранее известно, что никакой конец
a не может быть началом
b, этим всё и кончится, а иначе надо будет проверить, не пересекаются ли вхождения (разумеется, не ходя по символам. Всё нужное можно собрать к этому моменту в виде чисел).
А, ну, во втором случае вам придётся сначала быстренько распарсить маску, хотя бы определив положение
b в ней и длину
a.