Не подскажите есть ли какая нибудь компактная либа для использования регулярных выражений? Встрачал какуюто.... но там стока кодеса, жуть.
#include <atlrx.h> CAtlRegExp<> re; CAtlREMatchContext<> mc; re.Parse(<ваша реклама здесь>, 0); if(re.Match(lpCmdLine, &mc)) ...
PCRE - Perl Compatible Regular Expressions Написана на чистом, кошерном Си. Если лень самому компилировать, то можно найти уже скомпилированные версии библиотеки. Легко юзабельна из-под ассемблера и вообще любых языков, которые понимают си-конвенцию.
Nouzui Надо же, не знал, что они есть в atl. Самая маленькая реализация, что я встречал - это где-то у МС, облегчённая версия, сорец на си в районе 70 кб. Также в сорцах винды есть regexp от vi - 45 кб. А самая распространённая из полноценных - 100 кб одним файлом, но сейчас не вспомню, чьё оно.
блин, все не то большое ужасно... в общем долго копал в стороку VBScript.RegExp. получился такой код: Код (Text): #define _WIN32_WINNT 0x0400 #include <windows.h> #include <stdio.h> #include <objbase.h> #import "vbscript-regexp.tlb" using namespace VBScript_RegExp_55; void main() { CoInitializeEx(NULL,COINIT_APARTMENTTHREADED); IRegExpPtr spRegExp(L"VBScript.RegExp"); spRegExp->Global = _variant_t(true); spRegExp->Pattern = _bstr_t("^{(+|-)?}{\\d?\\d?\\d?}{((.|,)\\d\\d?\\d?)?}$"); IMatchCollectionPtr spMatches; spMatches = spRegExp->Execute(_bstr_t("+123.21")); IMatchPtr spMatch; for (int i=0;i<spMatches->Count;i++) { spMatch = spMatches->Item[i]; printf("\tMatch %d at %d: %s\n",i, spMatch->FirstIndex, (PSTR)spMatch->Value); } CoUninitialize(); } но блин местами падает, когда pattern задаешь какойнить другой...