VC利用boost庫解析正則表達式
最近作數據庫涉及到解析sql語句,以爲最好的辦法是寫正則表達式解析,因爲vc6沒有解析函數,本身寫又不甘心,後來從網上找到了boost庫,解決了這個問題.
boost下載地址:http://www.boost.orgios
boost庫安裝比較麻煩,須要本身編譯源文件,我整理了一下,若是僅僅須要作正則表達式,按下面的代碼敲就好了.
cmd
vcvars32.bat
cd D:/boost_1_32_0/libs/regex/build
d:
nmake -fvc6.mak
nmake -fvc6.mak install正則表達式
注意,別看下載下來的數據包沒有多大,解壓縮以後達到了100多M,編譯完以後爲109M,佔用131M,因此安裝時必定注意空出足夠的空間,敲入nmake -fvc6.mak後等待的時間比較長,屏幕上還會出現一大堆英語,能夠不作考慮.按照步驟往下敲就好了.壓縮包內文檔很詳細,參照文檔繼續就能夠了.sql
在VC6中集成:Tools->Options->Directories->Include files
加入:D:/boost_1_32_0數據庫
編寫一個源程序測試一下:express
#include "stdafx.h"
#include <cstdlib>
#include <stdlib.h>
#include <boost/regex.hpp>
#include <string>
#include <iostream>函數
using namespace std;
using namespace boost;測試
regex expression("^select ([a-zA-Z]*) from ([a-zA-Z]*)");ui
int main(int argc, char* argv[])
{spa
std::string in;
cmatch what;
cout << "enter test string" << endl;
getline(cin,in);
if(regex_match(in.c_str(), what, expression))
{
for(int i=0;i<what.size();i++)
cout<<"str :"<<what[i].str()<<endl;
}
else
{
cout<<"Error Input"<<endl;
}
return 0;
}ci
輸入: select name from table 輸出: str:select name from table str:name str:table