本文介紹使用boost庫正規表達式來解決字元比對、搜尋、替換等應用。
1、下載下傳與安裝boost庫
2、編譯動态庫,本文隻要支援正規表達式就可以,是以隻需要編譯E:/boost/libs/regex/build目錄下的檔案。這步比較關鍵。
具體操作:
在“運作”裡輸入“cmd”,打開指令提示符;
輸入指令“cd E:/boost/libs/regex/build”,設定目前目錄
設定VC2008的配置環境變量,找到Microsoft Visual Studio 9.0/VC/bin/VCVARS32.BAT檔案,把VCVARS32.BAT檔案用滑鼠拖到打開的cmd視窗("F:/Program Files/Microsoft Visual Studio/VC/bin/VCVARS32.BAT"),然後回車。
輸入指令“nmake –f vc9.mak”
等待幾分鐘,E:/boost/libs/regex/build多了一個vc9的檔案夾,裡面是很多lib和dll檔案。
3、配置VC2008 “VC++目錄”,使它編譯使時候能找到正則庫。
打開vc2008,選擇“工具->選項->項目與解決方案->顯示以下内容的目錄-> 包含檔案”,加入一行“E:/BOOST”
選擇“工具->選項->項目與解決方案->顯示以下内容的目錄-> 庫檔案”,加入一行“E:/BOOST /libs/regex/build/vc90”
4、編寫程式測試
VC2008中預設的是UNICODE編碼字元集,要使用regex的UNICODE版本tregex.關于正規表達式的應用可以檢視使用說明和執行個體,分别放在libs/regex/doc和libs/regex/example目錄中.注意在編譯連接配接的時候可能會報告libboost_regex-vc90-mt-gd-1_39.lib檔案無法找到,需要把libboost_regex-vc90-mt-gd-1_38.lib改成libboost_regex-vc90-mt-gd-1_39.lib
建立一個對話框的MFC工程,
加入頭檔案
#include <boost/regex/mfc.hpp>
在按鈕滑鼠單擊事件響應函數中加入
boost::tregex expression(_T("^select ([a-zA-Z]*) from ([a-zA-Z]*)"));
CString sRet;
CString in = _T("select gm from tab");
boost::tmatch what;
if(boost::regex_match(in, what, expression))//CString轉string
{
for(int i=0;i<what.size();i++)
{
sRet = CString(what.first, what.length(i));
MessageBox(sRet);
}
}else{
MessageBox(_T("Error Input"));
}
輸出的結果如下:
select gm from tab
gm
tab