Вам не нужно реализовывать новый алгоритм поиска. Достаточно передать функтор сравнения на карту.
Что-то вроде
struct MyLessThan
{
bool operator(const string& left, const string& right )(
//Your implementation of less than, where you can use regular expressions
//Don't forget it should have strict weak ordering
}
};
и затем определите карту как (используя функтор в качестве аргумента шаблона)
std::map<string, VALUETYPE, MyLessThan> myMap;
с VALUETYPE тип значений карты.