什麼是正則表達式?正則表達式是一種用來描述一定數量文本的模式。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 table
str:name
str:table
按照我們的要求,字符串被匹配挑出來了。
這在處理大量規則的文本格式的時候很有用,因為它很靈活,一通百通。
首先,即使你擁有了boost庫,也需要單獨編譯regex.
網上的介紹:
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
我用的是VS2003做了run.bat
chdir E:\Program\boost_1_34_1
bjam "-sTOOLS=vc-7_1" "-sVC71_ROOT=D:\Program Files\Microsoft Visual Studio .NET 2003\Vc7" "--prefix=E:\Program\boost" "--builddir=E:\Program\boost_1_34_1\build" "-sBUILD=debug release <runtime-link>static/dynamic" --with-regex install
PAUSE
至於參數,需要參考boost安裝介紹http://blog.csdn.net/begtostudy/archive/2007/11/11/1879213.aspx