上網baidu一下,發現支援正則的庫還真不少,大概有以下幾種:boost,gnu,vc7帶的atl中的和微軟發布的greta。
網上的朋友對boost評價不錯,決定就使用是它了!
我解壓的目錄是d:\boost
2、然後是編譯,我只要支援正規表示式就可以,因此只需要編譯d:\boost\libs\regex\build目錄下的檔案。據說全部編譯要花將近2個小時,沒有驗證過,在我家裡的機器上編譯正規表示式部分只用了不到5分鐘。
網上介紹的如何編譯最多的一篇文章是「vc利用boost庫解析正規表示式」,如果有人能根據這篇文章編譯成功不妨告訴小弟一聲……
以下是我的操作:
在「執行」裡輸入「cmd」,開啟命令提示符;
輸入命令「cd d:\boost\libs\regex\build」//設定當前目錄
輸入命令「d:」//轉到當前目錄
接下來是很關鍵的一步:
很多文章是這樣說的「輸入 nmake -fvc6.mak」
但是出現了「'nmake' 不是內部或外部命令,也不是可執行的程式或批處理檔案。」的錯誤提示。
然後你就會拼命查詢原因,結果又有文章上說是環境變數沒配置好,然後給出一堆「set」。
也有的文章說是執行一下visual studio安裝目錄下的vc98\bin\vcvars32.bat檔案就ok了。
你按照文章作者的方法做的,結果發現問題依舊!
以上說法都是正確的,但是說得都不是很完整,出現錯誤提示的根本原因就是環境變數沒配置好,不識別nmake命令,配置過jdk的朋友就很容易明白。如果按照作者的要求搞一堆「set」,未免大題小作了吧,因為我們只需要用一次'nmake' 就可以解決問題了。
vcvars32.bat正式配置環境變數的批處理檔案,但是配置的引數只在當前視窗有效,也就是說當你雙擊執行後視窗關閉,環境變數已經沒有了。
於是我用了以下方法:
把vcvars32.bat檔案用滑鼠拖到開啟的cmd視窗("d:\program files\microsoft visual studio\vc98\bin\vcvars32.bat"),然後回車。
輸入命令「nmake -fvc6.mak」
等待幾分鐘,ok了!,d:\boost\libs\regex\build多了乙個vc6的資料夾,裡面是很多lib和dll檔案。
3、到此資源已經準備好了,下面要做的工作是配置vc6.0,使它編譯使時候能找到正則庫。
把vc6下的所有lib和dll檔案拷貝到visual studio安裝目錄下的vc98\boostrex(boostrex是我自己建的)
然後開啟vc6.0,選擇「tools->options->directories->include files」,加入一行「d:\boost」
選擇「tools->options->directories->library file」,加入一行「c:\program files\microsoft visual studio\vc98\boostrex」(彩色部分是我的visual studio安裝目錄)
配置也ok了!
4、編寫程式測試
sdk下的測試:
#include "stdafx.h"
#include
#include
#include
#include
#include
using namespace std;
using namespace boost;
regex expression("^select ([a-za-z]*) from ([a-za-z]*)");
bjbjz.howbk.com;
shbjz.howbk.com;
tjbjz.howbk.com;
cqbjz.howbk.com;
hebbjz.howbk.com;
jlbjz.howbk.com;
sybjz.howbk.com;
dlbjz.howbk.com;
asbjz.howbk.com;
jnbjz.howbk.com;
qdrbjz.howbk.com;
zbbjz.howbk.com;
dybjz.howbk.com;
ytbjz.howbk.com;
wfbjz.howbk.com;
tybjz.howbk.com;
xabjz.howbk.com;
sjzbjz.howbk.com;
tsbjz.howbk.com;
qhdbjzz.howbk.com;
lybjz.howbk.com;
zzbjz.howbk.com;
whbjz.howbk.com;
csbjz.howbk.com;
wxbjz.howbk.com;
njbjzz.howbk.com;
lczem.howbk.com;
wzme.howbk.com;
labjz.howbk.com;
czme.howbk.com;
lfbjz.howbk.com;
whmi.howbk.com;
qdmt.howbk.com;
ycme.howbk.com;
ylme.howbk.com;
csme.howbk.com;
hebjz.howbk.com;
ncme.howbk.com;
ykme.howbk.com;
xyme.howbk.com;
xmme.howbk.com;
fzme.howbk.com;
wzcm.howbk.com;
sxcm.howbk.com;
hzme.howbk.com;
jnme.howbk.com;
dyme.howbk.com;
hfme.howbk.com;
hfme.howbk.com;
czce.howbk.com;
czmt.howbk.com;
zzmi.howbk.com;
jcbjz.howbk.com;
nbme.howbk.com;
nbzj.howbk.com;
wzbze.howbk.com;
sxzje.howbk.com;
hzzj.howbk.com;
jhbjz.howbk.com;
jnbzm.howbk.com;
lyjz.howbk.com;
qdzjb.howbk.com;
whait.howbk.com;
dyzj.howbk.com;
ytjz.howbk.com;
wfjz.howbk.com;
heze.howbk.com;
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
輸入: select name from table
輸出: str:select name from table
str:name
str:table
mfc下的測試(有幾個地方要注意,下面有提示):
新建乙個對話方塊的mfc工程,
加入標頭檔案
#include
在按鈕滑鼠單擊事件響應函式中加入
boost::regex expression("^select ([a-za-z]*) from ([a-za-z]*)");
cstring in = "select gm from tab";
cstring sret;
boost::cmatch what;
if(boost::regex_match(lpcstr(in), what, expression))//cstring轉string
{for(int i=0;i
輸出的結果跟上面一樣。
VC6 0下編譯boost庫的regex
今天要用到正規表示式,用網上的方法,直接使用命令 nmake vc6.mak 提示 nmake 不是內部或外部命令,也不是可執行的程式 上網搜尋了一下,說執行命令 call c program files microsoft visual studio vc98 bin vcvars32.bat 重...
VC6 0下配置boost庫使用正規表示式
最近做開發碰到了長字串匹配 搜尋的問題,最先想到的是使用正規表示式,簡單 高效。但是我用的開發工具是vc6.0,不支援正規表示式。上網baidu一下,發現支援正則的庫還真不少,大概有以下幾種 boost,gnu,vc7帶的atl中的和微軟發布的greta。網上的朋友對boost評價不錯,決定就使用是...
VC6 0下配置boost庫使用正規表示式
最近做開發碰到了長字串匹配 搜尋的問題,最先想到的是使用正規表示式,簡單 高效。但是我用的開發工具是vc6.0,不支援正規表示式。上網baidu一下,發現支援正則的庫還真不少,大概有以下幾種 boost,gnu,vc7帶的atl中的和微軟發布的greta。網上的朋友對boost評價不錯,決定就使用是...