首页 / 软件开发 / C++ / C++ boost正则表达式用法
C++ boost正则表达式用法2009-10-22 cnblogs 吴碧宇什么是正则表达式?正则表达式是一种用来描述一定数量文本的模式。Regex代表Regular Express.如果您不知道什么是正则表达式,请看这篇文章:深入浅出之正则表达式有了正则表达式的基础,问题是如何使用。我们以boost::regex来说先看一个网上经典的例子。 #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 tablestr:namestr:table按照我们的要求,字符串被匹配挑出来了。这在处理大量规则的文本格式的时候很有用,因为它很灵活,一通百通。首先,即使你拥有了boost库,也需要单独编译regex.网上的介绍:boost库安装比较麻烦,需要自己编译源文件,我整理了一下,如果仅仅需要做正则表达式,按下面的代码敲就行了:cmd
vcvars32.bat
cd D:oost_1_32_0libs
egexuild
d:
nmake -fvc6.mak
nmake -fvc6.mak install
注意,别看下载下来的数据包没有多大,解压缩之后达到了100多M,编译完之后为109M,占用131M,所以安装时一定注意空出足够的空间,敲入nmake -fvc6.mak后等待的时间比较长,屏幕上还会出现一大堆英语,可以不做考虑。按照步骤往下敲就行了。压缩包内文档很详细,参照文档继续就可以了。在VC6中集成:Tools->Options->Directories->Include files加入:D:oost_1_32_0我用的是VS2003做了run.batchdir E:Programoost_1_34_1
bjam "-sTOOLS=vc-7_1" "-sVC71_ROOT=D:Program FilesMicrosoft Visual Studio .NET 2003Vc7" "--prefix=E:Programoost" "--builddir=E:Programoost_1_34_1uild" "-sBUILD=debug release <runtime-link>static/dynamic" --with-regex install
PAUSE
至于参数,需要参考boost安装介绍http://blog.csdn.net/begtostudy/archive/2007/11/11/1879213.aspx