На прошлой неделе я начал перемещать свои частные и публичные репозитории из bitbucket, и я вспомнил об этом.
Открытая реализация подстановочных знаков C ++.Нативные C / C ++ & .NET
Теперь он отделен от нового «песочницы» новым проектом из моей песочницы в виде легких, быстрых и мощных символов подстановки в дополнение к движку медленного регулярного выражения и т. Д.
enum MetaSymbols
{
MS_ANY = _T('*'), // {0, ~}
MS_SPLIT = _T('|'), // str1 or str2 or ...
MS_ONE = _T('?'), // {0, 1}, ??? - {0, 3}, ...
MS_BEGIN = _T('^'), // [str... or [str1... |[str2...
MS_END = _T('$'), // ...str] or ...str1]| ...str2]
MS_MORE = _T('+'), // {1, ~}
MS_SINGLE = _T('#'), // {1}
MS_ANYSP = _T('>'), // as [^/]* //TODO: >\>/ i.e. '>' + {symbol}
};
Какреализовать собственный и т. д. Смотрите здесь:
Впрочем, это также возможно и для пользователей .NET через Conari engine.
В общем, смотрите реализацию «как это работает» или используйте «как есть» (лицензия MIT)
#include "regXwildAPI.h"
using namespace net::r_eg::regXwild;
...
if(searchEssC(_T("regXwild"), _T("reg?wild"), true)) {
// ...
}
searchEss(data, _T("^main*is ok$"));
searchEss(data, _T("^new*pro?ection"));
searchEss(data, _T("pro*system"));
searchEss(data, _T("sys###s"));
searchEss(data, _T("new+7+system"));
searchEss(data, _T("some project|open*and*star|system"));
...
Таким образом, я обновил свойстарый ответ.Наслаждайтесь.