看流星社区

 找回密码
 注册账号
查看: 1862|回复: 0

VC利用boost库解析正则表达式

[复制链接]

该用户从未签到

发表于 2013-5-1 08:23:02 | 显示全部楼层 |阅读模式
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

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

#include "stdafx.h"

#include "stdafx.h"
#include <cstdlib>
#include <stdlib.h>
#include <boost/regex.hpp>
#include <string>
#include <iostream>
using namespace std;
using namespace boost;
#if _DEBUG
#pragma comment(lib, "boost_regex-vc6-mt-sgd-1_38.lib")
#else
#pragma comment(lib, "boost_regex-vc6-mt-1_38.lib")
#endif
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
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-5-4 11:06

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表