您的位置:首页 > 其它

编译 boost 的正则表达式部分

2012-05-15 13:57 399 查看
VC利用boost库解析正则表达式

最近做数据库涉及到解析sql语句,觉得最好的办法是写正则表达式解析,由于vc6没有解析函数,自己写又不甘心,后来从网上找到了boost库,解决了这个问题.

boost下载地址:http://www.boost.org
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后等待的时间比较长,屏幕上还会出现一大堆英语,可以不做考虑.按照步骤往下敲就行了.压缩包内文档很详细,参照文档继续就可以了.

VC6中集成:Tools->Options->Directories->Include files

加入:D:\boost_1_32_0

注意:

如果运行 vcvars32.bat时提示找不到的话,可以在VC的安装目录搜一下,找到了之后在命令行处运行一下就可以了

编写一个源程序测试一下:

#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]*)");

int main(int argc, char* argv[])

{

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;

}

输入: select name from table

输出: str:select name from table

str:name

str:table

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: