打算利用這幾天看得 服務, 線程TLS API, 同步和STL寫一個應用程序, 作為服務在后臺執(zhí)行, 檢測指定路徑的文件變化, 把修改過的匹配查詢表達式的文件進行備份, 這樣就有一個文件查詢和名稱匹配, 正則表達式自然是最好的解決方法. 不過VC里面竟然不如VBS對于Regular Expression那樣有支持, 除非升級到VC.NET, 我到CodeProject上面查詢找到了相關解決方案:
其實VBS也是使用了微軟自己REGEX的一個COM, 稱為 "Microsoft VBScript Regular Expression 5.5" 我打開OleViewer找到了相關信息. 下面是那篇文章的使用例子
#import "RegExp.tlb" no_namespace
...
try {
static IRegExpPtr regExp( __uuidof(RegExp) );
regExp->Pattern = _bstr_t(lpszPattern);
HWND hWndCtrl = pDX->PrepareEditCtrl(nIDC);
if (pDX->m_bSaveAndValidate)
{
int nLen = ::GetWindowTextLength(hWndCtrl);
::GetWindowText(hWndCtrl, value.GetBufferSetLength(nLen),nLen+1);
value.ReleaseBuffer();
//now we verify it
if ( regExp->Test( (LPCTSTR)value) )
{
IMatchCollectionPtr matches=regExp->Execute((LPCTSTR)value);
if ( matches->Count== 1)
{
IMatchPtr match = matches->Item[0];
if ( match->FirstIndex==0 && match->Length == value.GetLength() )
{
return;
}
}
}
CString strMsg = CString("The input does not exactly have the pattern ") + lpszPattern;
pDX->m_pDlgWnd->MessageBox(strMsg);
pDX->PrepareEditCtrl(nIDC);
pDX->Fail();
}
else
{
}
}
catch (_com_error& e)
{
AfxMessageBox( e.ErrorMessage() );
}
這樣操作就簡單多了, 不過對于COM這東西, 我倒是情愿到
http://www.boost.org下載一個類庫, 不過不知道能不能使用在VC上面