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