VC利用boost庫解析正則表達式

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

相關文章
相關標籤/搜索